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

Posted

技术标签:

【中文标题】使用 SSH 密钥连接到远程 Centos 服务器【英文标题】:Connecting to a remote Centos server using SSH Keys 【发布时间】:2012-11-26 21:38:24 【问题描述】:

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

    使用普通的 ssh 命令和密码登录服务器一次,以便服务器将您的计算机添加到已知主机 在您的计算机上使用 cygwin-terminal 生成密钥并将密码留空:ssh-keygen -t rsa 现在设置您的私钥和 ssh 文件夹的权限:chmod 700 ~/.ssh & chmod 600 ~/.ssh/id_rsa 将公钥(id_rsa.pub)复制到服务器,登录服务器并将公钥添加到authorized_keys列表中:cat id_rsa.pub >> ~/.ssh/authorized_keys 导入公钥后,您可以将其从服务器中删除。在服务器上设置文件权限:chmod 700 ~/.ssh & chmod 600 ~/.ssh/authorized_keys 重启服务器上的 ssh 守护进程:service sshd restart 从您的计算机测试连接:ssh root@198.61.220.107

但是当我尝试 ssh 到远程服务器时,它仍然要求我输入密码。 .ssh 文件夹不是在服务器上创建的,所以我必须自己创建。对可能发生的事情有任何想法吗?我错过了什么?还有其他设置密钥的方法吗?

【问题讨论】:

当您提到〜时,您在说什么用户?此外,更改密钥不需要重新启动 sshd... @guillermog 请注意您未来问题的格式。它应该清晰易读,否则它只是一堵文字墙和一个开关。 @Blaskovicz 我使用的是 root 用户。 运行 ssh-v 可能会给你一些正在发生的事情的提示。 serverfault.com/questions/55343/…的潜在重复 【参考方案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 上下文,不需要之前的解决方法。

【讨论】:

【参考方案2】:

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

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

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

chmod g-w /home/user

chmod 700 /home/user/.ssh

chmod 600 /home/user/.ssh/authorized_keys

【讨论】:

对我来说关键项目是chmod g-w /home/user【参考方案3】:

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

chmod 600 .ssh/authorized_keys
chmod 700 .ssh

【讨论】:

试过了,但还是不行。【参考方案4】:

原来我在设置服务器时愚蠢地更改了/root 目录的所有者,所以因为这是/.ssh 目录所在的用户我试图用(root)登录的用户拒绝访问该目录,因为它属于另一个用户。

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

我将所有者改回 root 并且做到了。

chown root /root

谢谢大家的帮助。

【讨论】:

以上是关于使用 SSH 密钥连接到远程 Centos 服务器的主要内容,如果未能解决你的问题,请参考以下文章

复制我的身份证_rsa.pub公司通过ssh连接到远程服务器授权的u密钥

Laravel 5.1 SSH - 无法连接到远程服务器

CentOS 7教程-使用SSH工具远程连接CentOS

vm安装好虚拟机后,如何通过ssh远程连接到远程服务器上去

如何使用 SSH 连接到你的云服务器

SSH密钥登录突然连不上了