Mac: Unable to negotiate with x.x.x.x port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1

时间:2020-02-23 14:45:03  来源:igfitidea点击:

使用最新的macOS Sierra 10.12版本,您可能已经观察到连接到运行SSH的服务器或者网络设备的问题。

请注意,本文不一定适用于macOS,而是适用于任何具有最新OpenSSH v7的运行OS。
由于最新的OpenSSH版本,一些较旧的(旧式)加密算法已从默认设置中删除,因此默认情况下已删除。

显然,正确的做法是使远程设备运行更新版本的OpenSSH,但不幸的是,这并非总是可能。
幸运的是,您可以通过将参数传递给SSH客户端命令来强制协商这些旧选项。

您基本上需要在算法后面附加以下选项:

-o KexAlgorithms=+

以下是一些示例...

Unable to negotiate with 10.20.10.1 port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1

在这种情况下,命令将是:

ssh -p22 -o KexAlgorithms=+diffie-hellman-group1-sha1 [email protected]

在某些情况下,远程服务器要求组合多种加密算法。
如果最初指定一个特定的算法,然后抱怨另一个算法的提供,您将很容易知道这一点。
在这种情况下,您需要再次附加以下选项:

ssh -p22 -o KexAlgorithms=+diffie-hellman-group1-sha1 -o HostKeyAlgorithms=+ssh-dss [email protected]

注意:也可以查询远程服务器以查看使用了什么配置,如下所示:

ssh -p22 -G user<@IP_Address>