bash: /home/user/.ssh/authorized_keys: 没有那个文件或目录

skn*_*nit 12 shell bash ssh io-redirection

创建 ssh 密钥:

$ ssh-keygen -t rsa –P ""
Run Code Online (Sandbox Code Playgroud)

将密钥移动到授权密钥:

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

bash: /home/user/.ssh/authorized_keys: No such file or directory
Run Code Online (Sandbox Code Playgroud)

gol*_*cks 15

bash: /home/user/.ssh/authorized_keys: No such file or directory
Run Code Online (Sandbox Code Playgroud)

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

cat $HOME/.ssh/id_rsa.pub >> $HOME/test_this
Run Code Online (Sandbox Code Playgroud)

您现在将获得:

cat: /home/user/.ssh/id_rsa.pub: No such file or directory
Run Code Online (Sandbox Code Playgroud)

由于该文件不能在那个地方,如果/home/user/.ssh/不存在的话。

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

mkdir $HOME/.ssh
chmod 700 $HOME/.ssh
Run Code Online (Sandbox Code Playgroud)

然而,id_rsa.pub不会在那里。它将在您首先运行ssh-keygen命令的任何地方。


111*_*--- 7

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

然后只需创建目录:

mkdir ~/.ssh
Run Code Online (Sandbox Code Playgroud)

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

chmod 400 ~/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)

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

  • 正如您的最后一条评论所暗示的那样,是的,我发现您需要`chmod 700 ~/.ssh` (2认同)

slm*_*slm 6

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

$ ssh-copy-id -h
Usage: /usr/bin/ssh-copy-id [-i [identity_file]] [user@]machine
Run Code Online (Sandbox Code Playgroud)

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

$ ssh-copy-id user@remoteserver
Run Code Online (Sandbox Code Playgroud)

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