PuTTY 警告:服务器的主机密钥与 PuTTY 在注册表中缓存的密钥不匹配

Jun*_*Liu 5 linux ssh putty

当使用 PuTTY 连接到新主机时,我经常收到警告

服务器的主机密钥与 PuTTY 在注册表中缓存的密钥不匹配。

我按下后

是的

PuTTY 将服务器 RSA 密钥添加到 Windows 10 的注册表中,我将能够登录远程服务器,并且不会再次出现警告。

我知道 RSA 密钥是成对出现的,包括公开的和私有的。我想了解的是服务器将哪个密钥保存到我的本地机器中,我猜是服务器的公钥。

此外,当 PuTTY 与服务器建立初始 SSH 连接时,服务器如何决定转发哪个密钥?假设服务器有公钥列表,是否有任何客户端尝试建立连接的通用密钥?

这个通用密钥存储在服务器上的什么地方?下/root/.ssh/ authorized_keys

Mar*_*ryl 5

一般来说,当你得到

警告 - 潜在的安全漏洞!

服务器的主机密钥与 PuTTY 在注册表中缓存的主机密钥不匹配。

这是MITM 攻击的迹象。

另请参阅 PuTTY 文档以了解警告 - 潜在的安全漏洞!(消息的主要部分是什么,您在问题中以某种方式省略了)。

对于服务器,您永远不会收到此消息。当然,除非新服务器重复使用某些废弃服务器的 IP 地址/主机名。在这种情况下,可以忽略该警告。


当然,它是PuTTY 缓存的公钥私钥是秘密的,除了服务器管理员之外,任何人不能访问它。所以 SSH客户端无法获取它。


服务器确实可以拥有多个针对不同算法的密钥对(每种算法一个,例如 RSA、DSA、ECDSA、ED25519)。客户端和服务器将就使用的最佳算法达成一致(服务器和客户端都支持的算法中的最佳算法)。


密钥对通常存储在/etc/ssh(在带有 OpenSSH 的 Linux 上)。


尽管您的问题的措辞暗示您可能会将服务器/主机密钥对与用于向服务器进行身份验证的密钥对混淆。

请参阅我的有关了解 SSH 密钥对的文章。