使用SSH密钥连接到远程Centos服务器

时间:2012-12-09 04:20:46

标签: ssh ssh-keys openssh

我正在尝试使用SSH密钥连接到Centos 6.3服务器,因此我可以远程运行脚本,而无需每次都要求输入密码。我按照以下说明操作:

  1. 使用正常的ssh命令和密码登录服务器一次,以便服务器将您的计算机添加到已知主机
  2. 在使用cygwin-terminal的计算机中生成密钥并将密码留空:ssh-keygen -t rsa
  3. 现在为您的私钥和ssh文件夹设置权限:chmod 700 ~/.ssh & chmod 600 ~/.ssh/id_rsa
  4. 将公钥(id_rsa.pub)复制到服务器,登录服务器并将公钥添加到authorized_keys列表:cat id_rsa.pub >> ~/.ssh/authorized_keys
  5. 导入公钥后,可以从服务器中删除它。在服务器上设置文件权限:chmod 700 ~/.ssh & chmod 600 ~/.ssh/authorized_keys
  6. 在服务器上重新启动ssh守护程序:service sshd restart
  7. 从您的计算机测试连接:ssh root@198.61.220.107
  8. 但是当我尝试ssh到远程服务器时,它仍然在问我密码。 .ssh文件夹未在服务器上创建,因此我必须自己创建。关于可能发生什么的任何想法?我错过了什么?还有另一种设置密钥的方法吗?

4 个答案:

答案 0 :(得分:4)

显然这是一个已知的bug。建议的解决方案实际上并不起作用,但我发现这可以在CentOS 6.2系统上运行:

chmod 600 .ssh/authorized_keys
chmod 700 .ssh

答案 1 :(得分:3)

事实证明,当我设置服务器时,我愚蠢地更改了/root目录的所有者,因为这是/.ssh目录所针对的用户我尝试使用(root)它拒绝访问该目录,因为它属于另一个用户。

Dec 10 16:25:49 thyme sshd[9121]: Authentication refused: bad ownership or modes for directory /root

我将所有者更改回root,并且确实如此。

chown root /root

谢谢你的帮助。

答案 2 :(得分:1)

Althogh OP找到了一个解决方案,我想记录我的类似问题的解决方案,希望它对那些谷歌类似问题的人有所帮助并达到这个答案。

我遇到问题的原因是,在useradd命令创建后,CentOS服务器上用户主文件夹中的.ssh目录未设置为正确模式。

另外,我需要通过以下命令手动设置.ssh文件夹模式:

chmod g-w /home/user

chmod 700 /home/user/.ssh

chmod 600 /home/user/.ssh/authorized_keys

答案 3 :(得分:1)

其他答案是通用的,请注意Centos 6使用selinux。 selinux可以拒绝访问authorised_keys文件,尽管权限和所有权都是正确的

来自Centos 6 Release Notes中的已知问题:

  
      
  • 如果使用selinux将其传输到CentOS 6服务器,请确保正确设置了公钥的selinux上下文   启用。否则selinux可能会禁止访问   〜/ .ssh / authorized_keys文件和后果密钥   身份验证不起作用。为了设置正确的上下文   你可以使用:

         

    restorecon -R -v /home/user/.ssh

  •   来自CentOS 6的
  • ssh-copy-id知道selinux上下文,不需要以前的解决方法。

  •