为什么 SSH 报告可能存在具有不同密钥类型的中间人?

为什么 SSH 报告可能存在具有不同密钥类型的中间人?

我正在尝试连接到我之前连接过的服务器。但是,较新版本的 OpenSSH 不使用 DSA 密钥。尝试连接时出现以下错误:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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 a host key has just been changed.
The fingerprint for the ***RSA*** key sent by the remote host is
SHA256:mxVLlJWwlY7pRm1nhOksy0eS4KIQbAE8nv7x0p3Ds8Q.
Please contact your system administrator.
Add correct host key in /Users/john/.ssh/known_hosts to get rid of this message.
Offending ***DSA*** key in /Users/john/.ssh/known_hosts:25
***RSA*** host key for example.com has changed and you have requested strict checking.
Host key verification failed.

我发现问题是 DSA 密钥已存储,known_hosts但还没有 RSA 密钥。添加 RSA 密钥可以解决该问题。

我认为该消息具有误导性,RSA 主机密钥没有更改。

我希望 OpenSSH 通知我还没有 RSA 密钥并让我添加密钥。它还应该检查 DNS 中的密钥并显示Matching host key fingerprint found in DNS.消息(我已设置)。

是否值得向 OpenSSH 报告错误?

答案1

我认为该消息具有误导性,RSA 主机密钥没有更改。

该消息有效。你的密钥known_hosts是DSA,服务器发送RSA,它们不同并且是错误的。

自 OpenSSH 6.8 起,服务器在身份验证后发送所有密钥,以简化主机密钥轮换或弃用。

如果您有足够新的客户端和服务器,请继续使用解决方法,暂时接受 DSA 密钥并让客户端选择新的密钥:

ssh -oHostKeyAlgorithms=+ssh-dss your_remote_host

如果服务器有旧版本,您需要按照问题中的解释手动执行此操作。

这还需要一个配置为接受新密钥的客户端:UpdateHostKeys yes

相关内容