应显式禁用不安全密钥交换算法,仅保留curve25519-sha256、ecdh-sha2-nistp256/384/521、diffie-hellman-group-exchange-sha256等现代强算法,客户端和服务端均需配置kexalgorithms并重启生效。

要安全地过滤掉 diffie-hellman-group1-sha1 等已知存在后门风险或已被弃用的密钥交换算法,关键不是“添加”弱算法,而是**显式禁用不安全选项、只保留现代强算法**。OpenSSH 8.0+ 默认已移除 group1-sha1,但旧服务端或自定义配置仍可能启用它;客户端若未严格限制,就可能被降级协商到该算法。
确认当前支持的KexAlgorithms
先查看本地 SSH 客户端默认启用的密钥交换算法:
ssh -Q kex
输出中若包含 diffie-hellman-group1-sha1、diffie-hellman-group14-sha1 或 ecdh-sha2-nistp192 等,说明存在潜在降级风险(尤其 group1-sha1 已被 Logjam 攻击实证可破解)。
客户端侧:强制限定安全算法列表
编辑用户级 SSH 配置文件(推荐,影响范围可控):
vim ~/.ssh/config
添加以下内容(覆盖全部默认,仅保留经验证安全的算法):
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
- Host *
- KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256
注意:
– 不要用 + 前缀(那是“追加”,会引入风险);
– 明确用 = 赋值,表示完全替换默认列表;
– 排除所有含 sha1、group1、group14、nistp192 的条目;
– diffie-hellman-group-exchange-sha256 是可接受的 DH 类算法(前提是服务端支持动态素数生成)。
服务端侧:同步禁用弱算法(需管理员权限)
修改 /etc/ssh/sshd_config,添加或修正这一行:
KexAlgorithms curve25519-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256
然后重启服务:
sudo systemctl restart sshd
验证是否生效(从另一台机器测试连接,或使用):
ssh -vvv user@your-server 2>&1 | grep "kex:"
确认协商出的算法在你指定的安全范围内,且不再出现 group1-sha1。
额外加固建议
- 搭配禁用弱 HostKey 算法:
HostKeyAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,rsa-sha2-256,rsa-sha2-512 - 禁用 SSH 协议 v1:
Protocol 2 - 定期检查 OpenSSH 版本:
ssh -V,建议使用 ≥ 9.0 的版本(对量子抗性准备更完善) - 如必须兼容极老设备,宁可单独配 Host 规则,也不要全局放行 group1-sha1
安全不是“能连上就行”,而是确保每次握手都落在经过密码学界长期检验的算法集内。过滤掉 diffie-hellman-group1-sha1 不是妥协,是必要底线。










