使用SSH密钥连接到远程Centos服务器
我正在尝试使用SSH密钥连接到Centos 6.3服务器,这样我就可以远程运行脚本,而无需每次都询问密码。我已遵照以下指示:使用SSH密钥连接到远程Centos服务器,ssh,ssh-keys,openssh,Ssh,Ssh Keys,Openssh,我正在尝试使用SSH密钥连接到Centos 6.3服务器,这样我就可以远程运行脚本,而无需每次都询问密码。我已遵照以下指示: 使用普通ssh命令和密码登录服务器一次,以便服务器将您的计算机添加到已知主机 在您的计算机中,使用cygwin终端生成密钥并将密码短语留空:ssh keygen-t rsa 现在设置私钥和ssh文件夹的权限:chmod 700~/.ssh&chmod 600~/.ssh/id\u rsa 将公钥(id_rsa.pub)复制到服务器,登录到服务器并将公钥添加到授权密钥列表:
ssh keygen-t rsa
chmod 700~/.ssh&chmod 600~/.ssh/id\u rsa
cat id_rsa.pub>~/.ssh/authorized_密钥
chmod 700~/.ssh&chmod 600~/.ssh/authorized_key
service sshd restart
sshroot@198.61.220.107
但是当我尝试ssh到远程服务器时,它仍然在询问我密码。服务器上没有创建.ssh文件夹,所以我必须自己创建。你知道会发生什么吗?我错过什么了吗?是否有其他方法设置钥匙?显然,这是一个已知的方法。建议的解决方案实际上不起作用,但我发现这将在CentOS 6.2系统上起作用:
chmod 600 .ssh/authorized_keys
chmod 700 .ssh
事实证明,在设置服务器时,我愚蠢地更改了
/root
目录的所有者,因此,由于/.ssh
目录是为我试图登录的用户(root)设置的,所以它拒绝访问该目录,因为它属于另一个用户
Dec 10 16:25:49 thyme sshd[9121]: Authentication refused: bad ownership or modes for directory /root
我把所有者改回root,就这样做了
chown root /root
感谢大家的帮助。虽然OP已经找到了解决方案,但我想记录下我对类似问题的解决方案,希望它能对那些通过谷歌搜索类似问题并得出此答案的人有所帮助 出现问题的原因是CentOS server上用户主文件夹中的.ssh目录在通过
useradd
命令创建后未设置为正确的模式
此外,我需要通过以下命令手动设置.ssh文件夹模式:
chmod g-w/主页/用户
chmod 700/home/user/.ssh
chmod 600/home/user/.ssh/authorized_keys
其他答案是通用的,请注意Centos 6使用selinuxselinux可以拒绝访问授权密钥文件,尽管权限和所有权正确
根据以下已知问题:
- 如果使用selinux将公钥传输到CentOS 6服务器,请确保正确设置了该公钥的selinux上下文 启用。否则,selinux可能会禁止访问 ~/.ssh/authorized_keys文件和按后果排序的密钥 身份验证将不起作用。为了设置正确的上下文 您可以使用: restorecon-R-v/home/user/.ssh
- CentOS 6的ssh副本id可以识别selinux上下文,不需要以前的解决方法
当你提到~,你在说什么用户?另外,重新启动sshd并不是更改密钥所必需的…@guillermog请在以后的问题中注意格式设置。它应该清晰易读,否则它只是一堵文本墙和一个关闭按钮。@Blaskovicz我正在使用root用户。使用
-v
运行ssh
可能会给您一些正在发生的事情的提示。潜在的副本尝试过这个,但仍然没有运气。我的关键项目是chmod g-w/home/user