当我尝试通过 SSH 进入一个机器时,我收到了“无法确定主机 xx 的真实性”这条令人费解的消息。我有两个系统最近交换了名称。我的系统是 RHEL5.6 机器。
系统 X 的 IP 为 xx
系统 Y 的 IP 为 yy
更改为系统 X 的 IP 为 yy,系统 Y 的 IP 为 xx。
(希望这足以解释我们所做的事情)
我从 .ssh/known_hosts 文件中删除了这两个系统(并确认这两个系统的 IP 都没有列在任何地方),但当我通过 SSH 进入其中一个系统时,它仍然显示原始名称的 IP。另一个系统运行正常,但似乎某个缓存中仍然有旧信息。
我已经完全清除了known_hosts文件,并重新启动了系统,试图清除该问题,但没有成功。
有什么想法吗?我被难住了!这仅发生在我的系统上,其他人没有遇到问题。
更新: 我已经从文件中删除了有问题的密钥。我还完全删除了 known_hosts 文件。但这种情况仍然会发生。.ssh 的配置与其他帐户没有任何不同。如果是 .ssh 文件中的错误,也会影响其他 ssh 连接。但与此系统交换名称的其他系统不会出现此问题。它工作正常。它只是两个有问题的系统之一。自从这次更改以来,该框也已重新加载两次。所以我知道这不是服务器本身的问题。
我发现我的同事现在也遇到了同样的问题,用的也是同一个盒子。而且只有这一个盒子。
那么,如果我们的 DNS 区域文件是正确的,那么这可能是从何而来的呢?参与此更改的两个系统都没有旧信息。我们的 DNS 看起来很干净。我们的帐户没有引用旧信息。tracert 显示带有名称的旧 IP,ping 也是如此,然后是 ssh。但使用正向或反向的 nslookup 返回正确。有点令人沮丧。
答案1
听起来您收到的是未知主机的标准消息。由于您已从已知主机文件中删除密钥,因此这是意料之中的。如果您接受密钥,则以后连接到同一主机时将不会再提示您。
如果ssh
正在加密地址,SSH 会保留两个密钥,一个是 IP,另一个是名称。尝试删除 IP 地址。正如 PriceChild 所指出的,您应该会收到一条消息,其中指定了文件中有问题的行。您可以尝试使用和known_hosts
从已知主机文件中删除 IP 地址。ssh-keygen -R yy
ssh-keygen -R xx
答案2
下面是我自己的 ssh 连接主机密钥验证失败的一个示例:
[user@host path]$ ssh hostname
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: POSSIBLE DNS SPOOFING DETECTED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
The RSA host key for pricey-host has changed,
and the key for the according IP address 192.168.32.21
is unchanged. This could either mean that
DNS SPOOFING is happening or the IP address for the host
and its host key have changed at the same time.
Offending key for IP in /home/nagios/.ssh/known_hosts:4
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
2e:61:87:cd:e6:e0:08:72:84:ea:80:56:19:12:62:89.
Please contact your system administrator.
Add correct host key in /home/nagios/.ssh/known_hosts to get rid of this message.
Offending key in /home/nagios/.ssh/known_hosts:15
RSA host key for pricey-host has changed and you have requested strict checking.
Host key verification failed.
重要的一行是“/home/nagios/.ssh/known_hosts:15 中的违规密钥”这会告诉您确切的文件和行号。您没有看到此消息吗?
如果与上面的不一样,也许你可以发布你的精确的错误,我会改进我的答案,也许建议 ssh -v。
答案3
以下是您问题的解决方案:
使用 -R 选项从 known_hosts 文件中删除属于 hostname 的所有键。此选项对于删除散列主机很有用。如果您的
remote hostname is server.example.com, enter:
$ ssh-keygen -R {server.name.com}
$ ssh-keygen -R {ssh.server.ip.address}
$ ssh-keygen -R server.example.com**strong text**
Sample output:
/home/vivek/.ssh/known_hosts updated.
Original contents retained as /home/vivek/.ssh/known_hosts.old
您也可以查看此链接以获取更多信息:SSH 主机密钥更改错误
答案4
我遇到了同样的问题,在我更改了 Nagios3 监控的其中一台服务器的 IP 地址后,由于 nagios 用户没有 .ssh 文件夹,所以没有 known_hosts 可以删除...这是在 Debian 上发生的。
因此,解决方案变得非常简单,只需转到您尝试监控的服务器,然后重新启动 nrpe 服务器,在 debian 上我这样做:
/etc/init.d/nagios-nrpe-server重启
并且这立即解决了问题。