Diffie-Hellman Key Agreement Protocol 是一种密钥协商协议,低版本的 OpenSSH 中使用了这种过时不安全的加密算法协议,通常 OpenSSH 在版本迭代更新时会弃用这些不安全的加密算法,因此修复这个漏洞的最简单完美的方案是升级 OpenSSH 到最新的版本,升级办法可以参考本站:Centos7系统升级OpenSSH到openssh-8.*版本的方法一文。

如果因为一些客观原因,我们仍要继续使用旧版本的 OpenSSH ,那么可以根据实际情况,屏蔽掉不安全的加密算法,以降低安全风险。具体方法如下:

运行下面的代码,修改 sshd_config 配置文件,屏蔽掉不安全的 KexAlgorithms。

man sshd_config |grep -A 40 -w KexAlgorithms
echo "KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1" >> /etc/ssh/sshd_config
systemctl restart sshd
sshd -T | grep -w kexalgorithms

其中 sshd_config 的配置参数说明如下:

  • 当前 openssh 版本支持的算法列表和参数用法可以从帮助文档中查找到。
  • 指定可用的 KEX (Key Exchange) 算法,多个算法之间必须以逗号分隔。
  • 另外,如果指定的列表以’ + ‘字符开头,则指定的算法将被追加到默认集,而不是替换原有默认的。
  • 如果指定的列表以’ – ‘字符开头,则指定的算法(包括通配符)将从默认集中删除,而不是替换。(演示环境中的 openssh7.4 不支持)
  • 如果指定的列表以’ ^ ‘字符开头,则指定的算法将被放在默认集的开头。(演示环境中的 openssh7.4 不支持)