2012-12-09 77 views
7

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

  1. 登录到使用正常的SSH命令和口令一次服务器,以便服务器将您的计算机
  2. 在您的计算机使用的cygwin端生成密钥的已知主机离开密码留空: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. Retart服务器上的ssh守护进程:service sshd restart
  7. 测试从您的计算机连接:在服务器上设置文件权限ssh [email protected]

但是当我尝试ssh到远程服务器仍然问我密码。 .ssh文件夹不是在服务器上创建的,所以我不得不自己创建。任何想法可能发生什么?我错过了什么?是否有另一种方法来设置密钥?

+1

当你提到〜时,你在说什么用户? 此外,重新启动sshd不需要更改密钥... – Blaskovicz

+0

@guillermog请注意格式化您的未来问题。它应该清晰易读,否则它只是一段文字和关闭。 – Siddharth

+0

@Blaskovicz我正在使用root用户。 – guillermog

回答

3

那么它原来我有点傻里改变了/root目录的所有者,当我建立服务器,所以,因为这是/.ssh目录是为用户登录的,所以我试图用(root)登录,因为它属于另一个用户,所以拒绝访问该目录。

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

我将所有者更改回根,并做到了。

chown root /root 

感谢你们的帮助。

4

显然这是一个已知的bug。建议的解决方案不实际工作,但我发现,这将在工作中的CentOS 6.2系统上:

chmod 600 .ssh/authorized_keys 
chmod 700 .ssh 
+0

试过这个,但仍然没有运气。 – guillermog

1

Althogh OP已经找到了解决方案,我想记录我的类似问题的解决方案,希望它会有助于那些谷歌类似的问题,并达到这个答案。

我的问题的原因是CentOS服务器上用户的home文件夹中的.ssh目录在被useradd命令创建后未被设置为适当的模式。

此外,我需要通过下面的命令来手动设置的.ssh文件夹模式:

chmod g-w /home/user

chmod 700 /home/user/.ssh

chmod 600 /home/user/.ssh/authorized_keys

+0

我的关键项目是'chmod g-w/home/user' – djangodude

1

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

从已知问题Centos 6 Release Notes

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

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

  • 从CentOS 6的ssh的拷贝-ID知道SELinux内容和以前的解决方法不需要。

相关问题