强制使用sshv2并禁用降级,搭配curve25519等强kex、ed25519主机密钥、chacha20-poly1305加密及stricthostkeychecking预置指纹,三重协同防御中间人攻击。

防止中间人攻击,关键不是“堵住所有漏洞”,而是让攻击者无法伪造可信连接——这需要从协议层、密钥验证和加密强度三方面协同加固。只改一个地方(比如只升级算法)效果有限,必须组合配置。
强制使用 SSH 协议 v2 并禁用降级可能
SSH-1 已被证实存在设计缺陷,支持弱加密且无法抵抗已知降级攻击。OpenSSH 9.0+ 默认已移除 SSH-1 支持,但老旧系统或自编译版本仍可能残留风险。
- 检查服务端是否彻底禁用 v1:在 /etc/ssh/sshd_config 中确认没有
Protocol 1或Protocol 1,2行;应仅保留Protocol 2(或直接删除该行,因 v2 是现代默认) - 禁止客户端主动降级:在客户端配置 ~/.ssh/config 中为关键主机添加:
Host example.com<br> Protocol 2<br> KexAlgorithms +diffie-hellman-group14-sha256,diffie-hellman-group16-sha384
(加号表示“追加而非覆盖”,确保不引入弱密钥交换) - 验证是否生效:用
ssh -vvv user@host连接,观察日志中出现的debug1: kex: algorithm:和debug1: kex: host key algorithm:是否均为 v2 相关算法,且无ssh-rsa或ssh-dss等已弃用类型
选用抗量子、高熵的密钥交换与主机密钥算法
中间人能否成功,取决于他能否在密钥交换阶段冒充服务器。旧算法(如 diffie-hellman-group1-sha1 或 ssh-rsa)已被攻破或存在签名绕过漏洞,必须淘汰。
引导 OpenClaw 代理使用 exec 和 process 工具执行 Ralph Wiggum 循环。通过 pty:true 提供正确的 TTY 支持,编排编码代理(Codex, Claude Code, OpenCode, Goose)。利用 PROMPT.md、AGENTS.md、SPECS 和 IMPLEMENTATION_PLAN.md 规划和构建代码。包含规划与构建模式、背压机制、沙箱及完成条件。用户请求循环,代理使用工具执行。
- 服务端强制强 KEX(密钥交换):
在 /etc/ssh/sshd_config 设置:KexAlgorithms curve25519-sha256,ecdh-sha2-nistp521,diffie-hellman-group16-sha384,diffie-hellman-group18-sha512 - 禁用不安全主机密钥类型:
HostKeyAlgorithms ssh-ed25519,ecdsa-sha2-nistp384,rsa-sha2-512
(明确排除ssh-rsa和ssh-dss;若需兼容老客户端,可保留rsa-sha2-256,但不推荐) - 生成新主机密钥(覆盖旧密钥):
sudo ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ""<br>sudo systemctl reload sshd
客户端预置可信指纹,跳过“yes/no”陷阱
用户随手敲 yes 是中间人攻击最常利用的入口。真正安全的做法是让客户端“提前认识”服务器,而不是现场判断。
- 获取目标服务器真实公钥指纹:
ssh-keyscan -t ed25519,ecdsa-sha2-nistp384 example.com | tee -a ~/.ssh/known_hosts
(注意:用tee -a追加,避免覆盖已有可信条目) - 锁定校验行为:
在 ~/.ssh/config 中为该主机明确启用严格校验:Host example.com<br> StrictHostKeyChecking yes<br> UserKnownHostsFile ~/.ssh/known_hosts<br> # 可选:禁止接受新主机密钥<br> # UpdateHostKeys no
- 验证是否生效:删除本地
~/.ssh/known_hosts中对应条目后重连,应直接失败并报错WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!,而非弹出交互提示
配合 MAC 与认证加密算法提升传输完整性
即使密钥交换安全,若传输层加密弱,攻击者仍可能篡改数据包。SSH 的 MAC(消息认证码)和 AEAD(认证加密)算法是最后防线。
- 服务端启用 AEAD 加密(优先):
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com - 禁用 CBC 模式等易受填充预言攻击的算法:
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com
(-etm表示 Encrypt-then-MAC,比传统 MAC 更安全) - 客户端可额外限制(非必需但更稳妥):
在 ~/.ssh/config 添加:Host example.com<br> Ciphers chacha20-poly1305@openssh.com<br> MACs hmac-sha2-512-etm@openssh.com










