必须使用长位宽+ETM的MAC算法,因短位宽(如hmac-sha1、hmac-md5)易受碰撞攻击,非ETM模式存在填充预言等侧信道风险;SHA-256/SHA-512配合ETM确保先加密再认证,从协议层杜绝篡改。

要防止SSH会话被篡改,关键在于强制使用高安全等级的消息认证码(MACs)算法——即优先启用带ETM(Encrypt-then-MAC)后缀、基于SHA-2或更强哈希的长位宽MAC,禁用所有含SHA-1、MD5及非ETM模式的旧算法。
为什么必须用长位宽+ETM的MAC
短位宽(如hmac-sha1、hmac-md5)易受碰撞攻击,且无ETM机制时,加密与认证顺序不当可能引发填充预言等侧信道风险。SHA-256/SHA-512提供256位或512位输出强度,配合ETM可确保先加密再生成认证码,从协议层杜绝篡改可能。
服务端配置:在 /etc/ssh/sshd_config 中设置
编辑配置文件,明确指定仅允许以下强MAC算法(一行写完,无换行):
- Macs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com
- 删除或注释掉所有含 sha1、md5、-etm 缺失的条目(如 hmac-sha2-256、hmac-sha1、hmac-md5)
- 确认未启用已废弃的 legacy MAC(如 umac-64@openssh.com、hmac-ripemd160@openssh.com)
客户端兼容性与验证方法
若旧客户端连接失败,可在客户端 ssh_config 或命令行临时放宽(仅调试用):
- 连接时加参数:ssh -o MACs=hmac-sha2-256-etm@openssh.com user@host
- 查看实际协商结果:ssh -vvv user@host 2>&1 | grep "macs:"
- 扫描服务端支持项:ssh-audit host(需提前安装)或 nmap --script ssh2-enum-algos -p 22 host
生效前必做的三步检查
- 运行 sudo sshd -t 确认语法无误(无任何输出即通过)
- 执行 sudo systemctl reload sshd 而非 restart,避免连接中断
- 新终端登录测试,不复用已有连接会话

















