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


30

创建一个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
~/.ssh/authorized_keys是您连接/信任的其他计算机密钥,而不是您自己的密钥。
saiarcot895

一些应用程序要求对自己的计算机使用无密码的SSH。
Nehal J Wani 2014年

请不要在Stack Exchange网络的多个站点上发布相同的问题。
terdon

为什么需要信任您拥有的密钥?你到底想做什么?
Braiam 2014年

Answers:


74

您必须在第一次创建.ssh目录和authorized_keys文件。

  1. 创建.ssh目录:

    mkdir ~/.ssh
    
  2. 设置正确的权限:

    chmod 700 ~/.ssh
    
  3. 创建authorized_keys文件:

    touch ~/.ssh/authorized_keys
    
  4. 设置正确的权限:

    chmod 600 ~/.ssh/authorized_keys
    

权限很重要!没有正确的权限将无法正常工作!

现在,您可以将公钥添加到authorized_keys文件中:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

您必须将计算机的公钥添加到要使用SSH密钥访问authorized_keys计算机文件中!


如terdon所述,您也可以只使用以下命令:

ssh-copy-id user@host

这会将您id_rsa.pub(在~/.ssh目录中)放入远程计算机的authorized_keys文件中,.sshauthorized_keys在必要时使用正确的权限创建目录和文件。


5
无论如何,您都不想仅cat此而已ssh-copy-id
terdon

1
哇,很酷,我已添加了它。
Louis Matthijssen 2014年

@LouisMatthijssen我已将密钥复制到远程服务器。如何确认公钥已添加在authorized_keys中。
阿曼

2

如果您已通过电子邮件发送了公钥以安装到远程服务器:

1)SSH进入服务器。我在Windows上使用了PuTTY。

2)设置密钥:

mkdir ~/.ssh
chmod 700 ~/.ssh
vi ~/.ssh/authorized_keys

请注意准确复制密钥,并将其粘贴到编辑器窗口的新行中。验证它是否占用一行并保存。

chmod 600 ~/.ssh/authorized_keys

2

由于我没有足够的声誉,因此在此添加。除了Louis Matthijssen的答案之外,如果您仍然不能以已创建的用户身份通过​​ssh登录,例如

ssh username@host

则可能是由于缺少所有者权限,您必须将其添加到/home/username/.ssh文件夹中。我遇到了同样的问题,您可以授予以下权限:

chown -R username:username /home/username/.ssh

这可能是因为您正在创建目录并将权限设置为root,而不是您要用来访问服务器的用户名而发生的。

希望这对某人有帮助。


0

尝试

 touch $HOME/.ssh/authorized_keys

创建具有该用户权限的空文件。

当您首先使用该用户访问远程主机时,将创建此文件。


0

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

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.