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

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

创建 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

答案1

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最初运行命令的位置。

答案2

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

然后只需创建目录:

mkdir ~/.ssh

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

chmod 400 ~/.ssh/authorized_keys

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

答案3

如果可能的话,我总是鼓励人们使用命令行工具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 连接

答案4

如果在使用 创建密钥时ssh-keygen为其指定文件名,则此操作也可能会失败。我输入了一些名称my-ssh-file-name,它写入了密钥/Users/MyUserName而不是.ssh文件夹。如果将文件名留空,它将.ssh按预期写入。

相关内容