将 Ubuntu 从 14.04 升级到 16.04 后,我遇到了一点问题。我尝试通过 SSH 与某些服务器建立 SSH 连接,但升级后在某些情况下我得到了以下输出:
Unable to negotiate with 10.13.45.221 port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1
我知道添加这个:ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 user@legacyhost
但是也许有另一种方法可以全局启用它并仅使用 ssh user@host,就像在 14.04 中一样?
答案1
这意味着diffie-hellman-group1-sha1
在默认的密钥交换算法集中不存在。
要使ssh
选项永久生效,请将以下内容添加到您的~/.ssh/config
(或全局/etc/ssh/ssh_config
)中:
KexAlgorithms=+diffie-hellman-group1-sha1
如果您希望全局使用指令,请在添加指令时小心Host
、Match
等选择性声明,因为这些代码片段中的值仅适用于上述集合。如果不确定,请将其放在顶部。
答案2
嗨,大家好,这就是它对我有用的
将上面这一行添加到/etc/ssh/ssh_config
KexAlgorithms diffie-hellman-group1-sha1,[电子邮件保护],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1
取消注释(删除 #)这行Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc
,然后保存文件并执行这些命令ssh-keygen -A
和service ssh restart
。
如果您做得好,那么您应该能够使用 ssh,而无需将其添加-oKexAlgorithms=+diffie-hellman-group1-sha1
到 ssh 命令中。
答案3
nano /etc/ssh/ssh_config
添加这些:
KexAlgorithms=+diffie-hellman-group1-sha1
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc
出口
service ssh restart
然后你就可以像往常一样远程控制你的主机:
ssh username@hostname
or
ssh -l username hostname
这个对我有用.. :)