首页/系统/信创系统运维速查/禁用 SSH 弱加密算法
安全加固65 条

禁用 SSH 弱加密算法

按安全基线收窄 SSH 算法集:KexAlgorithms、Ciphers、MACs 只保留现代算法,兼容老客户端的场景单独评估例外。

信创系统运维速查系统更新于 2026-10-13

为什么要收窄算法集

SSH 握手时会从服务端与客户端各自支持的算法集合中协商出一套:密钥交换(Kex)、对称加密(Ciphers)、消息认证(MACs)。旧算法如 diff3-hellman-group1-sha1、arcfour、hmac-md5 已被证明不安全或强度不足,安全基线要求只保留现代算法。改写算法列表会直接改变握手行为,因此校验与回退方案必须一并准备。

基本信息

配置项KexAlgorithms、Ciphers、MACs、HostKeyAlgorithms
配置文件/etc/ssh/sshd_config
查看生效值sshd -T | grep -E 'kexalgorithms|ciphers|macs'
校验与生效sshd -t && systemctl reload sshd
兼容面老客户端、巡检软件、网管平台、部分硬件设备的 SSH 实现
权限要求root

典型使用场景

  • 等保与安全基线核查要求禁用弱加密算法
  • 漏洞扫描报告指出 SSH 支持弱算法需要整改
  • 迁移到信创环境后统一客户端与服务端的算法集
  • 排查扫描器报『支持 CBC 模式密码套件』之类问题
  • 新建服务器时直接按基线模板下发算法配置

配置与验证

配置与验证
# /etc/ssh/sshd_config
# KexAlgorithms curve25519-sha256,ecdh-sha2-nistp256
# Ciphers aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes128-gcm@openssh.com
# MACs hmac-sha2-512,hmac-sha2-256

sshd -T | grep -iE 'kexalgorithms|ciphers|^macs'   # 查看合并后的最终生效算法集
sshd -t && systemctl reload sshd                   # 先语法校验再重载,避免起不来
ssh -Q cipher | head                                # 查看本地客户端支持哪些算法,便于比对

客户端侧验证与回退

客户端侧验证与回退
ssh -o KexAlgorithms=curve25519-sha256 -o Ciphers=aes256-gcm@openssh.com user@host   # 用指定算法实测连接
ssh -vv user@host 2>&1 | grep -i 'kex\|cipher\|mac' | head    # 观察实际协商结果
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date +%F)    # 改前备份,便于快速回退
ssh-keygen -l -f /etc/ssh/ssh_host_ed25519_key.pub              # 确认主机密钥类型满足要求
systemctl status sshd --no-pager | tail -5                      # 重载后确认服务无异常

配置项与取值要点

配置项控制内容取值要点
KexAlgorithms密钥交换算法保留 curve25519 与 ecdh-sha2 系列
Ciphers对称加密算法优先 AEAD 类:gcm、chacha20-poly1305
MACs消息认证算法保留 sha2 系列,去掉 md5 与 sha1 系
HostKeyAlgorithms主机密钥类型与生成的主机密钥类型保持一致
算法列表写法逗号分隔,无多余空格拼写错误会导致 sshd 启动失败
老客户端可能不支持新算法,先看 sshd -T 的现状再灰度切换,并保留回退配置:切换后立刻用目标客户端实测连接,别等业务操作时才发现连不上。
算法收窄前先把当前生效值记录下来:整改前后的对比既能作为合规证据,也能在出现连接问题时快速定位是哪一项变更导致的。

易错点

  • 算法列表拼写错误或用了多余空格,sshd 直接启动失败,服务中断后才回头查配置
  • 只改服务端没验证客户端能力,切换后运维终端连不上,只能走控制台回退
  • 把 KexAlgorithms 收得只剩一种算法,遇到不支持该算法的合规扫描工具时无法协商
  • 忽略了网管平台与硬件设备的旧 SSH 实现,收窄后集中管控通道失效
  • 只重载服务没有做 sshd -t 校验,配置文件里其他语法问题被一并带入

数据来源与参考

  • man 5 sshd_config(KexAlgorithms/Ciphers/MACs)
  • OpenSSH 官方发行说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌