我的服务器运行的是 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
我注释掉了那一行,现在一切正常。