《Why I close SSH port 22 entirely (and what I use instead)》作者主张:
- 彻底关闭公网 SSH 22 端口,而非仅靠密钥登录或 fail2ban。
传统端口敲门(port knocking)用明文序列开端口,易被抓包重放。 - 改用 fwknop 单包授权(SPA):客户端发一个 加密+HMAC-SHA512 签名的 UDP 包,内含时间戳与一次性计数器。
- SPA 包加密防窃听、签名防伪造、时间戳/计数器防重放
- 加密密钥与 HMAC 密钥分离,一个负责"别让人偷看",一个负责"别让人造假"
- 服务端 fwknopd 校验通过后,临时(如 120 秒)向 iptables 插入仅放行客户端 IP 的 22 端口规则,超时自动回收。
- 配合
~/.ssh/config的 ProxyCommand 可让 ssh server1 透明敲门。 - Tailscale 加密隧道作兜底,确保万一 SPA 机制失效还能成功登录机器。
这个方案不是“换端口藏起来”,而是默认全拒+密码学鉴权,把攻击面缩到仅收 SPA 的 UDP 口,好处就是对扫描器而言 22 端口始终 filtered,无 banner、无 RST,OpenSSH 零日无法被触及。