OpenSSH 9.0+默认禁用不安全算法以符合现代密码标准,包括diffie-hellman-group1-sha1等KEX、ssh-rsa主机密钥及arcfour等加密/MAC算法;需在受控场景下通过sshd_config或ssh命令临时启用兼容选项,并优先推动系统升级。

OpenSSH 9.0 及更高版本默认禁用了多个不安全的加密算法和密钥交换方式,这是为了符合现代密码学最佳实践(如NIST、CNSA等标准),但也会导致与旧系统或嵌入式设备的兼容性问题。关键不是“能否降级”,而是如何在保障安全的前提下维持必要连接。
被强制禁用的核心算法
以下算法在 OpenSSH 9.0+ 中默认移除,客户端和服务端均不再支持:
- 密钥交换(KEX): diffie-hellman-group1-sha1、diffie-hellman-group14-sha1、diffie-hellman-group16-sha512(仅保留 diffie-hellman-group14-sha256、ecdh-sha2-nistp256 等 SHA-2 或更优实现)
- 主机密钥算法: ssh-rsa(基于 SHA-1 的 RSA 签名)被禁用;仅允许 rsa-sha2-256、rsa-sha2-512、ecdsa-sha2-nistp256、sk-ecdsa-sha2-nistp256@openssh.com 等
- 对称加密与 MAC: arcfour、blowfish-cbc、cast128-cbc、hmac-md5、hmac-sha1 全部移除
服务端兼容性适配(sshd_config)
若需临时支持老旧客户端(如某些网络设备、IoT终端),可在 /etc/ssh/sshd_config 中显式启用部分已弃用算法——但仅限受控内网且无法升级的场景:
- 添加 KexAlgorithms 行,补回 diffie-hellman-group14-sha1(不推荐加 group1-sha1)
- 启用 HostKeyAlgorithms 包含 ssh-rsa(前提是服务端仍持有 SHA-1 签名的 host key)
- 慎用 Ciphers 和 MACs —— 建议优先升级客户端,而非开放弱加密
- 修改后必须执行 sudo systemctl reload sshd,并用 sshd -T | grep -E "(kex|hostkey|cipher|mac)" 验证生效
客户端连接旧服务端的绕过方法(ssh_config 或命令行)
当你的本地 OpenSSH 版本较新,但要连接一台运行 OpenSSH 6.x 或更老版本的服务器时,可临时指定兼容参数:
- 命令行方式:ssh -o KexAlgorithms=+diffie-hellman-group14-sha1 -o HostKeyAlgorithms=+ssh-rsa user@old-server
- 配置文件方式:在 ~/.ssh/config 中为特定主机添加:
Host old-server KexAlgorithms +diffie-hellman-group14-sha1 HostKeyAlgorithms +ssh-rsa - 注意:这些选项是“追加”(+),不是覆盖;避免全局启用,防止误连其他高安全要求系统
长期建议:安全升级路径
禁用不安全算法不是障碍,而是推动技术债清理的契机:
- 为旧设备生成符合当前标准的新密钥:ssh-keygen -t ecdsa -b 256 -f ~/.ssh/id_ecdsa_new
- 服务端升级 OpenSSH 至 8.8+ 并使用 ssh-keygen -t rsa -b 4096 -o -a 100 重签 host key(启用 bcrypt 密钥派生)
- 审计所有 SSH 使用点(脚本、CI/CD、自动化工具),替换硬编码的弱算法参数
- 启用 LogLevel VERBOSE 或 ssh -vvv 排查握手失败原因,比盲目开启旧算法更高效










