新版Ubuntu 24.04 LTS,Fedora 40等Linux发行版陆续发布,系统自带的OpenSSH版本(包括SSL等依赖库)也随同更新升级。新版OpenSSH-server默认使用更安全、更新的加密算法,可能导致旧客户端、包括使用旧版openssh库的程序/组件无法正常登录。
命令 journalctl -xe --no-pager -u sshd.service
可以查看密钥交换过程中的错误信息,一般是密钥交换算法、主机密钥算法不匹配导致。解决方法一是更新升级客户端,二是修改服务端配置,使用兼容的算法。
如果使用第二种解决方式,需要修改 /etc/ssh/sshd_config
文件。最为关键的四个配置如下代码段所示,根据错误提示修改对应配置项即可(一般需要修改 KexAlgorithms 和 HostKeyAlgorithms)。
Ciphers aes128-ctr,aes192-ctr,aes256-ctr HostKeyAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-rsa,ssh-dss KexAlgorithms ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group14-sha1, diffie-hellman-group-exchange-sha256 MACs hmac-sha2-256,hmac-sha2-512,hmac-sha1