强制屏蔽弱加密算法需在/etc/ssh/sshd_config中顶格替换ciphers、macs、kexalgorithms为强算法列表,并同步禁用sshv1、rsa主机密钥、密码登录和root直连,最后通过sshd -t校验并reload生效。

直接在 /etc/ssh/sshd_config 中显式声明强算法并覆盖默认列表,就能强制屏蔽弱加密算法。关键不是“删掉”旧项,而是用顶格、无空格、逗号分隔的完整新列表替换原有配置,让 OpenSSH 只认你指定的那些。
先查清服务器实际支持哪些算法
不同 OpenSSH 版本支持的算法有差异,硬套网上配置可能报错或失效。执行以下命令获取当前可用列表:
-
ssh -Q cipher—— 找出含 cblowfish、3des、arcfour、aes.*cbc 的行,这些都要禁用 -
ssh -Q mac—— 屏蔽所有带 md5 或 sha1 且没有 etm@openssh.com 后缀的项 -
ssh -Q kex—— 过滤掉 group1-sha1、group14-sha1、diffie-hellman-group1-sha1 等弱交换方式
在sshd_config中精准覆盖三类算法
用 root 权限编辑配置文件(如 nano /etc/ssh/sshd_config),在文件末尾顶格添加或替换以下三行(删除所有旧的 Ciphers、MACs、KexAlgorithms 行):
- 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-sha26,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256
注意:每行开头不能有空格,逗号后不加空格,整行不能换行。
同步关闭配套不安全选项
仅改算法不够,还需切断其他攻击入口:
- 确保只用 SSHv2:
Protocol 2(删掉或注释掉所有Protocol 1或Protocol 1,2) - 停用 RSA 主机密钥:
HostKey行只保留/etc/ssh/ssh_host_ed25519_key和/etc/ssh/ssh_host_ecdsa_key,删掉所有含rsa的行 - 关闭密码登录(若已配密钥):
PasswordAuthentication no - 禁止 root 直连:
PermitRootLogin no
验证再生效,避免被锁出门
保存后别急着重启,按顺序操作:
- 语法检测:
sudo sshd -t—— 无任何输出才表示配置合法 - 重载服务:
sudo systemctl reload sshd(比 restart 更稳妥,不中断现有连接) - 新开终端测试:
ssh -vv user@localhost,查看日志里kex:、cipher:、mac:行,确认协商的是你设定的算法










