无法使 SSH 公钥认证正常工作

无法使 SSH 公钥认证正常工作

我的服务器运行的是 CentOS 5.3。我在 Mac 上运行的是 Leopard。我不知道哪个原因导致了此问题:

我可以通过密码验证顺利登录我的服务器。我已经完成了设置 PKA 的所有步骤(如所述http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-ssh-beyondshell.html),但当我使用 SSH 时,它拒绝尝试公钥验证。使用命令

ssh -vvv user@host

(其中 -vvv 将详细程度提升到最大级别)我得到以下相关输出:

debug2: key: /Users/me/.ssh/id_dsa (0x123456)
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-with-mic,password
debug3: preferred keyboard-interactive,password
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password

然后提示我输入密码。如果我尝试强制使用

ssh -vvv -o PreferredAuthentications=publickey user@host

我明白了

debug2: key: /Users/me/.ssh/id_dsa (0x123456)
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-with-mic,password
debug3: preferred publickey
debug3: authmethod_lookup publickey
debug3: No more authentication methods to try.

因此,即使服务器表示它接受公钥身份验证方法,并且我的 SSH 客户端坚持使用公钥身份验证方法,我也被驳斥了。(请注意,上面明显没有“提供公钥:”这一行。)有什么建议吗?

答案1

检查你的 Centos 机器是否具有:

RSAAuthentication yes
PubkeyAuthentication yes

在 sshd_config 中

并确保您对 centos 机器的 ~/.ssh/ 目录拥有适当的权限。

chmod 700 ~/.ssh/
chmod 600 ~/.ssh/*

应该可以解决问题。

答案2

我遇到了类似的问题 - 远程 PC 无法使用公钥身份验证登录 CentOs 6 服务器。我遇到的问题与 SELinux 有关 - 尝试登录的用户的主目录有安全上下文消息。我通过使用restorecon以下工具解决了这个问题:

restorecon -Rv /home

答案3

1-检查你的/etc/ssh/sshd_config,确保你有

RSA身份验证 是
公钥认证 是

2- 检查远程机器的安全日志,查找详细的 sshd 守护进程错误日志。例如在我的 Ubuntu 中

# grep 'sshd' /var/log/secure | grep '身份验证被拒绝' | tail -5
8 月 4 日 06:20:22 xxx sshd[16860]: 身份验证被拒绝:目录 /home/xxx 的所有权或模式错误
8 月 4 日 06:20:22 xxx sshd[16860]: 身份验证被拒绝:目录 /home/xxx 的所有权或模式错误
8 月 4 日 06:21:21 xxx sshd[17028]: 身份验证被拒绝:目录 /home/xxx 的所有权或模式错误
8 月 4 日 06:21:21 xxx sshd[17028]: 身份验证被拒绝:目录 /home/xxx 的所有权或模式错误
8 月 4 日 06:27:39 xxx sshd[20362]: 身份验证被拒绝:目录 /home/xxx 的所有权或模式错误

然后检查目录 /home/xxx 的所有权和模式,也许你需要运行这个

chmod 755 /home/xxx

答案4

明白了!原来是客户端的问题。(我认为任何服务器端问题都会产生更有用的调试输出。)不知为何,在我的 Mac 上,文件 /etc/ssh_config 中有这样一行

PubkeyAuthentication = no

我注释掉了那一行,现在一切正常。

相关内容