要生成.ssh
目录,我使用以下命令:
ssh-keygen
Run Code Online (Sandbox Code Playgroud)
取自本教程:http://ebiquity.umbc.edu/Tutorials/Hadoop/05%20-%20Setup%20SSHD.html
但是.ssh
目录没有创建,因此当我使用时,cd ~/.ssh
我收到此错误:
"no such file or directory"
Run Code Online (Sandbox Code Playgroud)
有缺失的一步吗?我应该在.ssh
使用ssh-keygen
命令时创建目录吗?
mvp*_*mvp 63
我假设您有足够的权限来创建此目录.
要解决您的问题,您可以ssh到其他位置:
ssh user@some.host
Run Code Online (Sandbox Code Playgroud)
并接受新的密钥-它会创建目录~/.ssh
和known_hosts
下方,或者干脆手动创建它使用
mkdir ~/.ssh
chmod 700 ~/.ssh
Run Code Online (Sandbox Code Playgroud)
注意这chmod 700
是重要的一步!
在那之后,ssh-keygen应该没有抱怨.
作为对其他答案的轻微改进,您可以使用的开关将mkdir
和chmod
作为单个操作执行。mkdir
-m
$ mkdir -m 700 ${HOME}/.ssh
Run Code Online (Sandbox Code Playgroud)
从 Linux 系统
$ mkdir --help
Usage: mkdir [OPTION]... DIRECTORY...
Create the DIRECTORY(ies), if they do not already exist.
Mandatory arguments to long options are mandatory for short options too.
-m, --mode=MODE set file mode (as in chmod), not a=rwx - umask
...
...
Run Code Online (Sandbox Code Playgroud)
有缺失的一步吗?
是.您需要创建目录:
mkdir ${HOME}/.ssh
Run Code Online (Sandbox Code Playgroud)
此外,SSH要求您设置权限,以便只有您(所有者)可以访问〜/ .ssh中的任何内容:
% chmod 700 ~/.ssh
Run Code Online (Sandbox Code Playgroud)
我在
.ssh
使用ssh-keygen
命令时是否应该生成目录?
否.此命令生成SSH密钥对,但如果无法写入所需目录,则会失败:
% ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/xxx/.ssh/id_rsa): /Users/tmp/does_not_exist
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
open /Users/tmp/does_not_exist failed: No such file or directory.
Saving the key failed: /Users/tmp/does_not_exist.
Run Code Online (Sandbox Code Playgroud)
创建密钥后,您还应该限制谁可以自己阅读这些密钥文件:
% chmod -R go-wrx ~/.ssh/*
Run Code Online (Sandbox Code Playgroud)