以下是有关如何修复在Mac上尝试使用SSH时,出现“no matching host key type found”错误消息的说明。
当尝试使用macOS将SSH连接到较旧的服务器时,您可能会收到一条SSH错误消息,内容如下:
Unable to negotiate with 123.123.123.123 port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss
要成功连接,OpenSSH必须为每个参数至少有一个相互支持的选项。如果客户端和服务器未能就一组互相参数达成一致,则连接将失败。在这种情况下,客户端和服务器无法就主机密钥算法类型达成一致。服务器提供了ssh-rsa或ssh-dss,OpenSSH支持它们。但由于安全问题,默认情况下不再启用。
自2021年8月20日发布OpenSSH 8.8后,ssh-rsa签名方案已被弃用。
在SSH协议中,“ssh-rsa”签名方案将SHA-1哈希算法与RSA公钥算法结合使用。现在可以以不到5万美元的价格对SHA-1算法执行选择前缀攻击。
如果您可以控制服务器,则应升级OpenSSH版本。但如果您需要立即访问服务器,有几种方法可以解决此问题......
最简单的方法
第一步
重新尝试SSH连接,将以下内容添加到命令行:
ssh -oHostKeyAlgorithms=+ssh-rsa username@123.123.123.123
或者,您可以按照以下步骤使该选项持久化......
持久化方案
第一步
打开新的终端窗口。
第二步
输入sudo nano ~/.ssh/config,然后在出现提示时,输入您的管理密码。
第三步
将下面两行添加到配置文件中,将123.123.123.123替换为要连接的服务器的IP。
Host 123.123.123.123
HostKeyAlgorithms +ssh-rsa
第四步
按Control+X退出。当要求保存修改的缓冲区时,输入Y。
单击返回,确认要写入的文件名。
第五步
现在,您可以像往常一样通过SSH连接到服务器。
ssh username@123.123.123.123