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 的排查清单处理;顺手把防火墙和密钥登录一起检查一遍。