OpenSSH 10.6 于 2026 年 10 月 6 日发布,距离 8 月 11 日的 10.5 不到两个月。我们在上一篇里拆过 10.4 和 10.5 里可能把人锁在门外的改动,这次的重点是一串安全修复,其中两项会改变现有行为。

安全修复里最值得注意的几项

  • 压缩侧信道:关闭压缩里的 LZ77 字典编码器,用来缓解学术研究「Crossing the Streams」(Bäumer 与 Brinkmann)提出的侧信道泄露。代价是开了压缩的连接压缩效果变差。
  • 命令行用户名注入:命令行上输入的用户名里不再允许出现 $ 和 \,避免来自不可信来源的用户名在 shell 上下文里形成注入。如果你的脚本把外部数据拼进 ssh user@host,这项修复就是为你准备的。
  • sftp 递归下载:更严格地校验服务器返回的路径,防止恶意服务器诱导递归复制写到目标目录之外。
  • GSSAPI:两处修复,认证失败那次的凭据不再被保存。
  • authorized_keys 的 restrict:现在会正确地作用于隧道转发。如果你给某把密钥加了 restrict,又在服务器上开着 PermitTunnel,以前那把密钥仍可能申请隧道。
  • 其他:压缩后的数据包不得超过最大包长;Match 块里取值为 none 的选项解析修复;ssh-keygen 处理证书日期时的夏令时换算误差(最多 1 小时)修复。

两项可能影响现有用法的变化

  • 用户名校验更严:命令行里带 $ 或 \ 的用户名会被拒绝。写在配置文件里的不受这一条影响,自动化脚本要检查。
  • 在缺少文件描述符传递的平台上,GatewayPorts 和 StreamLocalForwarding 会被强制关闭。常见 Linux 发行版不在此列。

新功能里和服务器运维相关的

混合后量子签名算法 ssh-mldsa44-ed25519 已启用;sshd 新增 WarnWeakCrypto 选项,用来提示弱算法;sftp 支持 mkdir -p;ChannelTimeout 接受小数秒;新增 AgentSocketPath 指定 agent 套接字位置。

怎么升级

大多数发行版不会马上把整个 10.6 推给稳定版,而是把安全修复向后移植到现有版本,所以看发行版的安全公告,不要只看版本号。升级 sshd 前,保留一个已登录的会话、先 sshd -t 检查配置,再重启服务,避免把自己关在门外。SSH 的基础用法见SSH 连接 Linux VPS(密码与密钥);万一升级后连不上,照SSH 连不上 VPS 的排查清单处理;顺手把防火墙和密钥登录一起检查一遍。