openssh 安全加固需禁用 sshv1、弱 kex(如 diffie-hellman-group1-sha1)、不安全主机密钥(dsa、rsa

OpenSSH 默认配置可能包含过时或不安全的加密算法和协议,为提升服务器安全性,需手动调整 sshd_config 文件,禁用 SSHv1、弱密钥交换(KEX)、不安全的主机密钥算法、对称加密及消息认证码(MAC)。以下为兼顾兼容性与安全性的实用配置指南。
禁用 SSHv1 并强制使用 SSHv2
SSHv1 存在严重设计缺陷,早已被弃用。确保服务器仅响应 SSHv2 连接:
- 在
/etc/ssh/sshd_config中设置:
Protocol 2 - 删除或注释掉任何
Protocol 1或Protocol 1,2行 - 重启服务生效:
sudo systemctl restart sshd
限制密钥交换(KEX)算法
优先选择基于 ECDH 或 FFDHE 的现代密钥交换,禁用易受降级攻击或已知脆弱的算法(如 diffie-hellman-group1-sha1):
- 推荐配置(一行写完,无换行):
KexAlgorithms curve25519-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256 - 避免使用:
diffie-hellman-group1-sha1、diffie-hellman-group14-sha1、diffie-hellman-group16-sha512(除非明确需要旧客户端兼容)
指定强主机密钥与对称加密套件
主机密钥用于身份验证,对称加密保护会话数据。应禁用 RSA 密钥长度小于 3072 位、DSA(已废弃)、以及 CBC 模式等弱算法:
- 主机密钥(按优先级顺序):
HostKey /etc/ssh/ssh_host_ed25519_key
HostKey /etc/ssh/ssh_host_rsa_key
并确保 RSA 私钥为 3072 位或以上(生成命令:ssh-keygen -t rsa -b 3072 -f /etc/ssh/ssh_host_rsa_key) - 对称加密(Ciphers):
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr - 消息认证码(MACs):
Macs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com
验证配置并测试连接
错误配置可能导致服务无法启动或客户端无法登录,务必分步验证:
- 语法检查:
sudo sshd -t(无输出即通过) - 重载而非重启(降低中断风险):
sudo systemctl reload sshd - 本地测试:
ssh -o HostKeyAlgorithms=+ssh-ed25519 -o PubkeyAcceptedAlgorithms=+ssh-ed25519 user@localhost - 远程扫描验证(需另一台机器):
ssh -vvv user@server查看协商的 KEX/Cipher/MAC;或用nmap --script ssh2-enum-algos -sV server_ip
配置后,旧版客户端(如 OpenSSH diffie-hellman-group-exchange-sha256 和 aes128-ctr),但不要启用 SHA-1 相关算法。安全与兼容需按实际环境权衡。










