OpenSSH 10.4 于 2026 年 7 月 6 日发布,10.5 于 2026 年 8 月 11 日发布。这两个版本已经或即将随各发行版的更新进到你的服务器上,其中有三处被官方标注为「可能不兼容」的变更,值得在升级前先看一眼——因为 sshd 出问题的代价是你连不上去修它。

10.4 的三处不兼容变更

  • 配置转储改用混合大小写指令名。sshd -T / ssh -G 这类输出现在写作 PubkeyAuthentication 而不是全小写。任何用 sshd -T | grep pubkeyauthentication 判断配置的脚本会静默失配——不报错,只是永远匹配不到,然后你的合规检查或自动化会得出错误结论。改成 grep -i 即可。
  • Linux 上 seccomp 沙箱初始化失败从「继续运行」改成「致命错误」。以前 sshd 在沙箱不可用时会退而求其次继续服务,现在直接失败。在老内核、受限容器、部分虚拟化平台上,这意味着升级之后 sshd 可能起不来。这个改动方向是对的(沙箱静默失效等于安全假设被架空),但升级前你必须知道它。
  • 传输层更严格:认证后重协商(rekey)期间收到非 KEX 消息会直接断连。正常客户端不会踩到,但一些老旧的库、跳板工具、长连接会话可能在长时间连接后突然断开。如果升级后出现「跑一两个小时就掉线」,先怀疑这里。

10.4 同时修了三个安全问题:sftp 客户端的下载位置可被服务端操纵scp 远程到远程传输的限制,以及 internal-sftp 命令行参数截断导致安全选项失效。最后这一条尤其值得注意:如果你用 internal-sftp 加参数来做受限的 SFTP 账户,参数被截断意味着你以为加上的限制可能根本没生效。

10.5 的不兼容项与新功能

10.5 的「可能不兼容」只有一条:可移植版 OpenSSH 现在要求 libcrypto 提供 ECC 支持,包括 NISTP521 曲线。用发行版包的人不受影响;自己在裁剪过的 OpenSSL 上编译的,会在构建阶段直接失败。

新功能里最实用的是 ssh -Z按实际尝试顺序打印公钥认证过程中试过的密钥。这直接解决了最常见的一类 Permission denied (publickey)——本地密钥太多、ssh-agent 里堆了七八把,服务端的 MaxAuthTries(默认 6)在轮到正确的那把之前就被打满了。以前只能靠 ssh -vvv 在一堆输出里数顺序,现在一条命令看清楚。

其余 10.5 的改动:ssh-keygen 可以设置或清除 FIDO 私钥的 touch-required / verify-required 标志;证书认证会优先尝试摩擦更低的 FIDO 密钥;sshd 用 setproctitle(3) 把认证后的监控进程标记成 sshd-session,看进程列表时更容易分辨。

升级 sshd 的纪律(这条比版本号重要)

  • 永远留一个已经连上的会话不要断。升级并重启 sshd 之后,用另一个新窗口连一次,确认能进去,再关掉原来那个。已建立的连接不受 sshd 重启影响,这就是你的安全绳。
  • 改完配置先做语法检查sudo sshd -t;想看最终生效的配置用 sudo sshd -T(记得大小写变了)。
  • 容器或老内核上,升级前确认 seccomp 可用,否则会撞上上面那条致命化改动。
  • 提前准备带外通道。服务商的 VNC / 串口控制台 / 救援模式,要在需要它之前就知道怎么进。

真被锁在外面了怎么办

先分清是网络层不通还是 SSH 服务本身的问题,两者的排查方向完全不同:《连不上 VPS 的 SSH?逐步排查清单》给了从本地网络、防火墙、端口到服务状态的完整顺序,《SSH 超时连不上时该怎么办》侧重超时这一类症状。日常预防的部分——密钥登录、ufw 规则、改端口是否值得——在《VPS 安全加固:ufw 防火墙与 SSH 密钥登录》里。SharkCloud 的每个实例都可以从控制台直接进入,即使 sshd 彻底起不来,也不必重装系统。