由于某种原因,我无法在新的 CentOS 机器上不使用密码进行 ssh 连接。
我曾尝试遵循以下指南:
- http://linuxproblem.org/art_9.html
- http://www.thegeekstuff.com/2008/11/3-steps-to-perform-ssh-login-without-password-using-ssh-keygen-ssh-copy-id/
但两者都不起作用。我甚至检查了我的/etc/ssh/sshd_config
文件。 PubkeyAuthentication yes
最初被注释掉了,所以我取消注释了该行并重新启动了 sshd,但仍然无济于事。还有什么可能缺失的吗?
我尝试以 root 身份从服务器 A ssh 到服务器 B。因此,以 root 身份登录一台机器,然后以 root 身份 ssh 到下一台机器,而无需输入密码。
更新
我运行了ssh -v ...
但无法复制/粘贴到这里。一切看起来都很好,直到这一行:
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure. Minor Code may provide more information
Unknown code krb5 195
答案1
针对 CentOS/Red Hat/etc 的基于公钥的身份验证的简要指南...
在 SSH 客户端上:
ssh-keygen # Accept all defaults, do not enter a password.
ssh-copy-id USER@SERVER_IP
restorecon -R ~/.ssh
在 SSH 服务器上:
# Login to the server normally (with password)
restorecon -R ~/.ssh
基于公钥的身份验证现在应该可以工作了。
答案2
这些问题(是通常与权限相关)更容易从服务器端进行调试。我建议您使用以下命令在调试模式下启动另一个 sshd:/usr/sbin/sshd -d -p 2222
这将在端口 2222 上启动另一个 sshd,然后ssh -p 2222 user@sshserver
在客户端运行。当您的客户端尝试进行身份验证时,观察 sshd 输出的内容。
权限问题不一定只是。 也可能是、或 的/home/$USER/.ssh
问题。 如果其中任何一个是组可写的,则可能存在问题。/
/home
/home/$USER
另一个常见问题是,你在 authorized_keys 文件中的密钥中间粘贴错误并插入换行符
答案3
serverA# ls -lah /root
serverA# ls -lah /root/.ssh
serverA# selinuxenabled
serverA# echo $?
serverB# ls -lah /root
serverB# ls -lah /root/.ssh
serverB# senlinuxenabled
serverB# echo $?
如果这没有显示问题,请尝试以下步骤。ServerA 是客户端,serverB 是 ssh 服务器。
在 serverB 上,编辑 /etc/ssh/sshd_config。找到如下行:
日志级别信息
更改为:
日志级别详细
然后:
serverB# /etc/init.d/sshd restart
在服务器A上:
serverA# ssh -vvv root@serverb
您现在可以查看服务器 B 上的 /var/log/secure 文件以寻找线索。
最后提示,请查看:
答案4
如果您启用了 SELinux,那么这是一个常见问题...
在 SSH 服务器上运行以下命令:
restorecon -R /home/$USER/.ssh
或者,对于 root:
restorecon -R /root/.ssh
'Nuff 说...