SSH 主机密钥已更改 - 但实际上并没有

SSH 主机密钥已更改 - 但实际上并没有

我刚刚尝试通过 SSH 连接到一台服务器,我已经这样做了一段时间,没有任何问题,然后收到一条警告,称服务器的主机密钥已更改。

但事实却没有!

在服务器上,我检查了引用的主机密钥/etc/ssh/sshd_config,它没有改变。

在客户端上,我检查了known_hosts文件,其中的现有条目具有正确的公钥。我尝试暂时移开known_hosts文件,并将其设置为StrictHostKeyChecking,以便它会自动连接,这样我就可以比较公钥。当我这样做并检查中的新条目时,公钥部分与之前相同!no/etc/ssh/ssh_configknown_hosts

那么为什么它无法连接呢?唯一不同的known_hosts是主机名的盐和哈希。但由于我一直都是通过 IP 和端口连接,而不使用主机名,所以这些肯定是正确的。

有任何想法吗?

请注意,所有尝试连接的客户端(之前已连接)都会收到此消息。因此,这不是客户端的问题。

编辑:我应该补充一点,当我使用StrictHostKeyChecking设置为 进行连接no并创建一个新known_hosts文件时,当我尝试使用新known_hosts文件再次连接并StrictHostKeyChecking返回到 时yes,它连接时没有任何警告。换句话说,新known_hosts文件在没有警告的情况下工作,而旧文件却没有,尽管里面有相同的公钥。

答案1

您不应该为这个测试禁用主机密钥检查。当出现有关冲突的错误消息时,它会打印指纹,并像 David 所说的那样,告诉您 known_hosts 文件中哪个条目不匹配。

您可以将指纹与主机密钥进行比较;我不知道,但互联网搜索会告诉您。

类似ssh-keygen -l -f server-public-key.txt [Linux表格]可以。

此外,使用 ssh -vv 并检查 /var/log/auth.log(或等效日志)应该会告诉您有关该问题的更多信息

相关内容