bash:/home/user/.ssh/authorized_keys:没有这样的文件或目录


11

创建一个ssh密钥:

$ ssh-keygen -t rsa P ""

将密钥移到授权密钥:

$ cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys

bash: /home/user/.ssh/authorized_keys: No such file or directory

同样的问题,为什么需要将密钥添加到自己的主机?
布莱阿姆2014年

@Braiam我的主目录位于网络驱动器上时,我已经执行了此操作。这使我可以SSH到安装此驱动器的任何计算机。因此,我并没有向自己的主人致敬。
FDinoff 2014年

Answers:


13
bash: /home/user/.ssh/authorized_keys: No such file or directory

路径的元素/home/user/.ssh/不存在;shell(bash>>在执行命令(cat)之前检查重定向()。如果/home/user确实存在,请尝试以下操作:

cat $HOME/.ssh/id_rsa.pub >> $HOME/test_this

您现在将获得:

cat: /home/user/.ssh/id_rsa.pub: No such file or directory

由于该文件不能放在该位置,因此如果/home/user/.ssh/不存在该文件,请从头开始。

您正在遵循一些说明,可能会跳过一些位。要创建目录:

mkdir $HOME/.ssh
chmod 700 $HOME/.ssh

但是,id_rsa.pub不会在那里。它将是您ssh-keygen最初运行命令的任何地方。


6

确保首先以要创建ssh密钥的用户身份登录(或者准备将命令中的路径修改为正确的主目录)。

然后只需创建目录:

mkdir ~/.ssh

使用cat上面列出的命令创建文件。然后,不要忘记正确设置权限:

chmod 400 ~/.ssh/authorized_keys

您可能要确保.ssh目录也具有适当的权限。


1
正如您的最后评论所暗示的,是的,我发现您需要chmod 700 ~/.ssh
KCD 2014年

6

如果可能的话,我总是鼓励人们使用命令行工具ssh-copy-id

$ ssh-copy-id -h
Usage: /usr/bin/ssh-copy-id [-i [identity_file]] [user@]machine

如果您只想将默认的SSH公钥复制到远程服务器,则只需运行以下命令:

$ ssh-copy-id user@remoteserver

我在题为“ 无法与rsync共享ssh连接 ”的问答中展示了如何使用此工具的完整示例。


0

如果在使用创建密钥时ssh-keygen给它提供文件名,这也会失败。我输入了一些名称my-ssh-file-name,它将密钥写到/Users/MyUserName而不是.ssh文件夹。如果将文件名留空,它将.ssh按预期写入。


或者,您当然可以指定将自定义密钥直接写入.ssh文件夹:-f ~/.ssh/custom-key-name
议会
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.