我正在尝试使用SSH密钥连接到Centos 6.3服务器,因此我可以远程运行脚本,而无需每次都要求输入密码。我按照以下说明操作:
ssh-keygen -t rsa
chmod 700 ~/.ssh & chmod 600 ~/.ssh/id_rsa
cat id_rsa.pub >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh & chmod 600 ~/.ssh/authorized_keys
service sshd restart
ssh root@198.61.220.107
但是当我尝试ssh到远程服务器时,它仍然在问我密码。 .ssh文件夹未在服务器上创建,因此我必须自己创建。关于可能发生什么的任何想法?我错过了什么?还有另一种设置密钥的方法吗?
答案 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中的已知问题:
- 来自CentOS 6的
如果使用selinux将其传输到CentOS 6服务器,请确保正确设置了公钥的selinux上下文 启用。否则selinux可能会禁止访问 〜/ .ssh / authorized_keys文件和后果密钥 身份验证不起作用。为了设置正确的上下文 你可以使用:
restorecon -R -v /home/user/.ssh
ssh-copy-id知道selinux上下文,不需要以前的解决方法。