如何从 MacOS 终端通过 SSH 连接到 Ubuntu 22.04。未找到匹配的主机密钥类型

如何从 MacOS 终端通过 SSH 连接到 Ubuntu 22.04。未找到匹配的主机密钥类型

我无法从 MacOS 终端登录我新安装的 Ubuntu 22.04。

这是我尝试通过 SSH 连接到 ubuntu 时遇到的错误

QWERTY-M-91FL:~ qwerty$ ssh [email protected]
Unable to negotiate with 16.67.45.123 port 22: no matching host key type found. Their offer: rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256,ssh-ed25519

答案1

此错误是由于服务器和客户端没有通用的主机密钥类型而导致的。这很可能是由于 SSH 服务器版本较新而 SSH 客户端版本较旧所导致的。Ubuntu 22.04 捆绑了 OpenSSH 8.9,而 ssh-rsa(最常用的密钥类型)自 OpenSSH 8.8 以来已被禁用。从发行说明

此版本默认禁用使用 SHA-1 哈希算法的 RSA 签名。进行此更改是因为 SHA-1 哈希算法在加密方面存在漏洞,并且有可能以不到 5 万美元的价格创建选择前缀哈希冲突1

最好的方法是更新你的 ssh 客户端版本。说真的。这可能是更改服务器设置的一种简单方法,但正如 OpenSSH 开发人员所说,旧版 ssh-rsa 很容易出现哈希冲突,这可能会完全破坏您的安全性并允许中间人攻击。


另一种方法是告诉服务器生成较旧的主机密钥类型(手动的)。

  1. 获取客户端上所有支持的主机密钥类型的列表:

    mtak@client:~$ ssh -Q sig
    ssh-ed25519
    [email protected]
    ssh-rsa
    rsa-sha2-256
    rsa-sha2-512
    ssh-dss
    ecdsa-sha2-nistp256
    ecdsa-sha2-nistp384
    ecdsa-sha2-nistp521
    [email protected]
    
  2. 选择受支持的主机密钥(签名)类型并将其添加到服务器上的 HostkeyAlgorithms 列表中:

    在 中/etc/ssh/sshd_config,添加和/或设置:

    HostkeyAlgorithms ssh-rsa
    

    (请注意,我还没有测试过这一点。我没有足够老的 SSH 客户端来遇到这个问题)

答案2

请注意,您遇到此错误是因为旧的主机密钥算法被禁用。因此,在继续操作时请注意:

您可以使用以下方式覆盖主机密钥算法

ssh -oHostKeyAlgorithms=+rsa-sha2-512 [email protected]

相关内容