SSH 无密码登录不一致

SSH 无密码登录不一致

我正在尝试设置 SSH 的无密码登录,以便在我的系统上编写一些自动测试脚本。

我需要为两台不同的机器进行设置,因此从机器“A”我需要对机器“B”和“C”使用无密码登录。

我已经运行了以下命令,它适用于机器“B”,但不适用于机器“C”。

me@A# ssh-keygen
... [ follow the instructions just pressing Enter ]
me@A# ssh-copy-id -i ~/.ssh/id_rsa.pub root@B
... [ enter password when requested, etc.]
me@A# ssh root@B
Last Login XXX from YYY
root@B#

所以这对机器“B”来说没问题。如果我对机器“C”执行完全相同的程序,那么它就不起作用了。

两台机器都是最新的 Scientific Linux 6.4,我运行了“telnet B 22”和“telnet C 22”来确定每台机器上运行的是哪个版本的 SSH(“SSH-2.0-OpenSSH_5.3”)。我比较了机器 B 和 C 上的 /etc/ssh/sshd_config 文件。它们是相同的。

我尝试从机器“C”开始,每次开始新测试时,我都会小心地清除所有三台机器上的“.ssh”目录,但每次都会得到相同的结果。“B”可以,但“C”不行 - 它仍然要求输入密码(但至少让我进去了)

我正在寻找一个特定的测试,试图找出这两台机器之间的区别,是什么让这个功能在一台机器上工作,而在另一台机器上不工作。它们甚至装在完全相同的盒子里。一台有 1GB 内存,一台有 4GB。这大概是唯一的物理区别。

答案1

检查远程计算机的 .ssh 目录以及该目录中的 authorized_keys 文件的权限。这些权限应该只有您用于 ssh 的用户才可读,因此“.ssh”的权限应为 0700,“authorized_keys”的权限应为 0600,并且这些权限需要具有正确的所有权。

您还可以在 ssh 命令中使用“-vvv”参数来查看是否在身份验证过程中提供了正确的密钥,以及该过程在何处停止并恢复到密码

答案2

在机器 C 上,您可以尝试停止 sshd 服务并在调试模式下运行 ssh 守护程序。您可以在通过 SSH 登录时执行此操作,只需确保保留一个额外的会话以重新启动 sshd 服务即可。您可以使用以下命令在调试模式下启动 sshd:

$ service sshd stop
$ /usr/sbin/sshd -d

然后尝试登录服务器,调试输出很可能会告诉您问题所在。完成后,不要忘记重新启用 sshd 服务。

相关内容