我已经将两台计算机从 Ubuntu 14.04LTS 升级到 16.04LTS,但在使用 openssh 时遇到了问题。
例如,使用 Putty 0.64 及更低版本的软件,我无法与 diffie-hellman-group-exchange-sha256 或 diffie-hellman-group-exchange-sha1 建立连接。
第一个有效的是 diffie-hellman-group14-sha1。
升级之前它运行良好,在另一台装有 14.04LTS 的电脑上,它继续与 putty 0.64 配合良好,与 diffie-hellman-group-exchange-sha256 配合得不太好。
这很奇怪,因为 Putty 0.65 及以上版本继续运行良好。
所以我认为我的配置仍然很好,它与正在运行的 Ubuntu 14.04 相同。
这是 OpenSSH_7.2p2 Ubuntu-4ubuntu2.1 上的错误吗?
多谢
答案1
我发现,在连接到各种 ssh 服务器(在本例中,是由金融机构运营的服务器)时,许多 diffie-hellman-group-exchange 方法在 Ubuntu 16 上不起作用,而在 Ubuntu 14 上却能正常工作。这与接受该方法后协商密钥大小有关。Ubuntu 16 中的 OpenSSH 不会接受小于 2048 位的密钥,而较旧的 OpenSSH 在此情况下接受较短的密钥。客户端的解决方法是排除这些密钥。因此,在 /etc/ssh/ssh_config 中我有:
HostKeyAlgorithms +ssh-dss
KexAlgorithms diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,[email protected]
第一行允许 DSS,我知道不太安全。但需要连接,而我不控制这些服务器。第二行是受支持的密钥交换方法 (ssh -Q kex) 的完整列表,其中只省略了两个有问题的 diffie-hellman-group-exchange-* 方法。最好按相反的顺序列出这些方法,因为这可以作为优先顺序,而我拥有的列表将较新、较强大的方法放在最后。无论如何,省略那些与您需要连接的服务器不兼容的方法,或者在命令行上指定一个已知兼容的方法,是解决您和我所见问题的方法。