我已多次成功且轻松地设置了无密码 ssh 身份验证(通过 authorized_keys),通常是在之前没有任何自定义 ssh 相关配置更改的服务器上。
现在我需要在 CentOS 服务器上进行设置,之前有其他人禁用了该功能,原因是一位不了解情况的经理表示“担心安全问题”。现在那位经理已经不在了,我不知道该如何操作。
我在 sshd_config 中有这个:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
UsePAM yes
还有其他设置,但我认为它们没有什么区别。有什么建议我应该检查什么才能使其正常工作?
答案1
我见过的最常见原因是 ~/.ssh/authorized keys 的权限太宽松。授权密钥文件必须仅对所有者具有读/写权限 ( chmod 600 ~/.ssh/authorized_keys
)。目录本身也不能允许任何写入 ( chmod 700 ~/.ssh
)
答案2
您实际上可以注释掉AuthorizedKeysFile
,因为它是默认设置。
当前发生故障时服务器会记录什么?您是否已检查 和 的权限.ssh
并authorized_keys
/或禁用StrictModes
?
如果必要的话,增加LogLevel
和/或sshd
以分离模式运行。
答案3
快速而简单的解决方案:从可以工作的服务器复制 /etc/ssh/sshd_config 和 /etc/ssh/ssh_config。
您还可以从工作和非工作服务器上的文件中删除所有注释(例如,egrep -v '^#' /etc/ssh/sshd_config | sort | uniq
在两台服务器上运行并比较结果。
正如 Alex 所建议的,还要查看目录和文件权限。