唯一可靠方式是显式声明强算法白名单并禁用脆弱组件;需在sshd_config中顶格配置protocol 2、kexalgorithms(如curve25519-sha256等)、ciphers(如chacha20-poly1305@openssh.com等)、macs(含-etm@openssh.com),禁用cbc、sha-1、dsa及弱rsa密钥。

确认当前支持的算法
在修改前,先查清本机实际可用的选项,避免写入不支持的算法导致服务启动失败:运行以下命令获取本地支持列表:
-
密钥交换(KEX):`ssh -Q kex` → 关注含
group1-sha1、group14-sha1的条目,这些必须剔除 -
对称加密(Ciphers):`ssh -Q cipher` → 排除所有带
cbc、3des、arcfour、blowfish的算法 -
消息认证码(MACs):`ssh -Q mac` → 避开
sha1、md5,只保留含etm@openssh.com后缀的项
精准覆盖三类核心算法配置
编辑/etc/ssh/sshd_config,在文件末尾**顶格添加**(或替换已有行),确保无空格、无换行、无注释:
-
Ciphers:
chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr -
Macs:
hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com -
KexAlgorithms:
curve25519-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256
注意:不要保留旧的 Ciphers/Macs/KexAlgorithms 行,直接覆盖;逗号后不可加空格。
同步禁用协议与弱主机密钥
算法层之外,还需切断其他薄弱入口:- 强制协议版本:
Protocol 2(删除或注释掉任何含Protocol 1的行) - 停用 RSA 主机密钥:
HostKey /etc/ssh/ssh_host_ed25519_key和HostKey /etc/ssh/ssh_host_ecdsa_key;删除或注释掉ssh_host_rsa_key相关行 - 生成新密钥(如未存在):
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N "" - 关闭弱认证:
PasswordAuthentication no、PermitRootLogin no
验证配置是否生效
改完不重启,分步验证更稳妥:- 语法检查:
sudo sshd -t—— 无输出即通过 - 重载服务:
sudo systemctl reload sshd(比 restart 更安全,避免断连) - 本地测试:
ssh -vv user@localhost,查找日志中kex:、cipher:、mac:行,确认协商结果与配置一致 - 远程扫描:
nmap --script ssh2-enum-algos -p22 your-server-ip,核对输出中不再出现已禁用算法










