OpenSSH 10.6 发布
摘要
OpenSSH 10.6(10.6p1)已于 2026-10-06 发布,包含多项安全修复、对 scp -R 和旧平台 sshd 支持的弃用通知,以及更严格的用户名和路径校验。开发团队特别指出 AI 辅助安全漏洞报告数量激增,并表示 AI 发现的漏洞往往会被独立地再次发现,因此他们将更频繁地发布版本,以便更快地推出修复。
暂无内容
查看缓存全文
缓存时间: 2026/10/06 20:53
# OpenSSH:发行说明
Source: https://www.openssh.org/releasenotes.html
---
### OpenSSH 10\.6 (https://www.openssh.org/txt/release-10.6)/10\.6p1 (https://www.openssh.org/txt/release-10.6)\(2026\-10\-06\)
```
OpenSSH 10.6 已于 2026-10-06 发布。可通过 https://www.openssh.com/ 列出的镜像站点获取。
OpenSSH 是一套 100% 完整的 SSH 协议 2.0 实现,并包含 sftp 客户端与服务端支持。
近期 OpenSSH 团队收到了大量安全漏洞报告,其中许多发现来自 AI 模型,或借助 AI 工具完成。
虽然在结合现实威胁模型进行评估后,许多 AI 报告被判定不具有安全影响,我们仍然非常欢迎这类报告——尤其是当其与人工分类、分析、测试用例相结合时,特别是当报告中还附带了建议的修复方案时。
** 我们已经看到若干案例:由 AI 工具识别出的安全漏洞,
** 随后被另一位研究人员独立发现。
** 这表明,那些不会向开源项目报告漏洞的攻击者,很可能
** 同样具备发现这些漏洞的能力。
** 鉴于此,OpenSSH 团队目前将采取更频繁的发布策略,
** 以便让用户更快地获得缺陷修复,而不是把它们积攒到下一次
** 计划中的版本再一并发布。
在此,我们再次感谢 OpenSSH 社区对本项目的持续支持,特别是那些贡献代码或补丁、报告缺陷、测试开发快照以及向项目捐赠的人士。
有关捐赠的更多信息请见:https://www.openssh.com/donations.html
未来弃用通知
-------------------------
* scp(1):开始弃用 `-R` 选项,该选项用于在远程主机上执行 scp 从而实现远程到远程的复制。这个选项是一种脆弱的优化手段,使用起来也很不便,因为它要求在远程主机上持有凭据。此外,如果执行复制的远程系统上的 shell 引用规则与客户端的预期不一致,还会带来安全隐患。
从 OpenSSH 10.6 起,该选项仍将继续可用,但会向标准错误输出一条弃用警告。在未来的版本中,该选项将被忽略,并保留默认的远程到远程复制行为(通过运行 scp 的主机进行复制)。
* sshd(8):在未来的版本中,将移除对不支持文件描述符传递、且分配 PTY 需要 root 权限的平台的支持。已知受影响的平台包括 SCO OpenServer 5 和 QNX 6,但也可能包括其他类似的老旧操作系统。
如果这些平台的用户社区能够协助我们构建替代方案(例如避免 PTY 分配对 root 权限的需求),则可以避免此次弃用。
可能不兼容的变更
--------------------------------
* ssh(1)、sshd(8):由于下文"安全"部分所述的变更,压缩的效果将会下降
* ssh(1):在命令行中输入的目标用户名现在会受到更严格的检查,包含反斜杠和美元符号的用户名将被拒绝。通过配置文件中 "User" 指令指定的用户名不受这些限制。此变更的动机见下文"安全"部分。
* sshd(8):在不支持文件描述符传递、且 PTY 分配需要 root 权限的平台上,GatewayPorts 和 StreamLocalForwarding 选项将被强制禁用。此变更的动机见下文"安全"部分。
自 OpenSSH 10.5 以来的变更
=========================
本次发布包含多项安全修复、若干新功能以及一些小型缺陷修复。
安全
========
* sftp(1):更严格地校验服务器返回的路径,以避免某些情况下服务器返回的路径可操控递归复制操作,使其写入目标目录之外的位置。
报告与补丁来自 Junghoon Cho。
* sshd(8):当使用 GSSAPIAuthentication 时,仅在认证成功后才存储 GSSAPI 凭据。这样可避免在某次 GSSAPIAuthentication 认证失败后,其凭据仍然残留、并在随后的其他认证成功时被不当提供的情况。
问题报告与补丁来自 Moritz Theile。
* sshd(8):在认证前重置 GSSAPIAuthentication,避免某次认证尝试的状态与后续尝试的状态相混淆。
报告与反馈来自 Moritz Theile。
* sshd(8)、ssh(1):禁用 LZ77 字典编码器,以缓解 Fabian Bäumer 和 Marcus Brinkmann 所著《Crossing the Streams: SSH Plaintext Recovery via a Common Compression Context in Multiplexed Channels》中描述的侧信道泄露,预印本见 https://arxiv.org/abs/2609.07709 (2026)
存在一种选择明文攻击方法,它利用基于字典的压缩,通过与 SSH 会话共享压缩字典的另一个通道,来恢复某个通道中的机密信息。
攻击者可控的输入会可辨识地反映在所传输密文的总长度上,这是因为 LZ77 会用指向 SSH 会话编码器搜索缓冲区的反向引用(back-reference)替换重复字符串,而该缓冲区在所有通道之间共享。
正因如此,文档此前已建议不要为同时传输可信与不可信流量的连接启用压缩。
此变更会降低 Compression 选项的有效性。
我们鼓励用户尽可能在 SSH 协议之上使用应用层压缩,因为这种方式通常更有效,并且完全不受此类攻击的影响。
* ssh(1):禁止在命令行输入的用户名中出现 `$` 和 `\` 字符,以避免来自不可信来源的用户名通过 ProxyCommand、Match exec 等在 shell 上下文中引发注入。
通过配置文件指定的用户名不受此限制的约束。
由 SecBuddyF KeenLab Tencent (CodeBuddy Security) 报告。
我们仍然建议不要将 ssh(1) 及其他工具的命令行直接暴露给不可信输入。
鉴于所使用的 shell 与用户配置种类繁多,此类缓解措施无法做到绝对有效。
* ssh-keygen(1):修正日期转换时对夏令时(Daylight Saving Time)的处理。
此前的处理可能产生最多 +/- 1 小时的误差(除非你处于 Antarctica/Troll 时区,在那里误差可能达到 +/- 2 小时)。
这些误差可能导致生成有效期错误的证书。
bz4004;来自 Khush Patel
* sshd(8)、ssh(1):确保压缩后的载荷不会膨胀到超过所支持的最大数据包长度。
由 Oleh Konko 报告。
* sshd(8):完整地遵循 authorized_keys 中的 "restrict" 关键字,该关键字此前未被正确应用到隧道转发(PermitTunnel,默认禁用)上。
这与 openssh-10.5 中已修复的问题是相互独立的另一个问题。
* sshd(8):正确处理接受 "none" 的部分选项。包括 AuthorizedPrincipalsFile 在内的一些选项,其文档说明接受 "none" 作为禁用它们的方式;然而,当被 sshd_config(5) 的 Match 关键字覆盖时,这个参数却被错误地解释成了一个字面文件名。
与 Chris Rohlf 合作完成,借助了 Claude 和 Anthropic Research。
* sshd(8):在 OS X SDK >= 27 上不再支持沙箱,因为我们所依赖的 API 已被移除,且没有提供明显的替代方案。
* sshd(8):在不支持文件描述符传递、且 PTY 分配需要 root 权限的平台上,认证后的 sshd-session 进程保留 root 权限;而在其他平台上,该进程以登录用户的权限运行。
当 sshd-session 以提升后的权限运行时,它可以以 root 身份执行某些操作,并绕过通常会施加于用户身上的限制,例如建立 unix domain socket 连接或通过(`-R` 转发)绑定到较小编号的 TCP 端口。
正因如此,本次发布禁用了 GatewayPorts 和 StreamLocalForwarding 选项;如果找不到避免在认证后进程中使用权限的替代方案,未来将移除对这些(少数)平台的支持。
受影响的平台包括 QNX 6、SCO OpenServer 5,以及使用 `--disable-fd-passing` configure 选项构建的版本。
该问题分别由 sn0x-sharma 和 Dark River 报告。
新功能
------------
* 所有组件:启用混合后量子签名算法 ssh-mldsa44-ed25519。
请注意,此算法不再使用此前实验性实现所使用的 "@openssh.com" 供应商扩展后缀。
使用此前实验性支持生成的密钥必须重新生成和/或删除。
* sshd(8):在 sshd_config(5) 中新增 WarnWeakCrypto 选项。
此前该选项仅对客户端可用。
该选项默认启用,当客户端使用不具备后量子安全性的密钥协商方案时会记录日志。
* ssh-keygen(1)、ssh-add(1):通过检查凭据的 credProtect 策略,保留从 FIDO 令牌加载的常驻密钥所要求的用户验证(PIN 或生物识别)要求。
GHPR701,来自 Savely Krasovsky
* ssh(1):在 `~I` 连接信息显示中包含本地与远程的版本字符串。
* ssh-add(1):新增 `-P` 选项,用于在不需要时跳过 FIDO 和 PKCS#11 令牌的 PIN 输入。
* sftp(1):为 mkdir/lmkdir 新增 `-p` 选项,用于按需创建目录。
该选项的使用体验与 mkdir(1) 类似,已存在的目录不会引发错误。
* ssh-keygen(1):新增 "hexdump" 密钥导出模式,以十六进制格式转储 SSH 线路格式的密钥数据块(blob)。
在编写文档、测试等场景下很有用。
例如:`ssh-keygen -em hexdump -f /key`
* ssh(1)、sshd(8):ChannelTimeout 现在接受包含小数秒的超时值。
* sshd(8):通过新增的 AgentSocketPath 选项,允许指定用于代理转发的 `$SSH_AUTH_SOCK` 位置。
这既支持使用用户专属路径(例如默认的 `$HOME` 子目录写法:"user:.ssh/agent"),也支持此前允许代理转发 socket 位于共享目录中的方式(例如 "shared:/tmp")。
在共享目录中创建的 socket 将被创建在一个名称随机化的子目录内。
bz3860
* ssh-agent(1):通过 `-A` 选项允许指定代理 socket 目录。
其接受与 sshd 的 AgentSocketPath 选项类似的 "user:" 和 "shared:" 目录风格。
* sshd(8):将公钥认证中的 "key ok" 测试与认证尝试分开统计。
新增 `PubkeyOptions max-pk-ok:nnnn` 选项,允许一定数量的 PK_OK 测试(询问服务器是否可能接受某个给定公钥)不计入 MaxAuthTries,默认为 6 次尝试。
这些尝试耗尽后,后续尝试将作为失败的认证计入 MaxAuthTries。
在实际使用中,这使得服务器在断开连接之前,可以检查磁盘上或 ssh-agent 中的更多密钥。
* ssh(1)、sshd(8):扩展已有的 TCPKeepAlive 选项,使其同样支持为转发连接所创建的 socket 设置 keepalive。
此前该选项仅控制连接 socket 上的 keepalive。
TCPKeepAlive "yes" 或 "transport" 启用连接 socket 上的 keepalive。
"TCPKeepAlive all" 则额外为转发 socket 启用 keepalive。
bz3921
缺陷修复
--------
* sshd(8)、ssh(1):修复在一些突厥语系语言中配置匹配的问题,这些语言的带点 i 和不带点 I 字符是互不相同的,具体包括阿塞拜疆语和克里米亚鞑靼语。
bz3991
* ssh(1)、sshd(8):不要尝试在非 IP/IPv6 socket 上设置 TCP_NODELAY。
消除了调试日志中的部分噪音。
* ssh(1):修复 `ssh -G` 选项输出的大小写问题;
bz4005
* ssh(1)、sshd(8):修复 ChannelTimeout 的特异性(specificity)问题;此前,更具体的通道类型(例如 "session:shell")如果比用户指定的 ChannelTimeout 更具体,可能会覆盖掉用户指定的较宽泛的设置(例如 "session")。
此外,在某些情况下,调试消息打印的是 0 而非实际生效的超时值。
bz3994
* sftp(1):避免在服务器的 stat/lstat 操作失败时,某些情况下出现的 NULL 解引用崩溃。
GHPR707
* sshd(8):修复一个竞态条件:如果服务器在处理 SIGHUP 重启请求时收到 SIGTERM/SIGQUIT,该信号会被忽略。
bz3981
* sshd(8)、ssh(1):在解析密钥时,尽可能早地对照允许列表(PubkeyAcceptedAlgorithms 等)检查密钥与 CA 的签名类型。
这降低了被禁用算法所带来的攻击面。
由 Chris Rohlf 提出并提供大量反馈,借助了 Claude 和 Anthropic Research。
* 所有组件:当 libcrypto 被禁用时,将 ed25519 签名算法的回退实现从 SUPERCOP ed25519 切换为 libsodium。
libsodium 的实现包含了多项相对于我们此前一直使用的原始参考实现更为严格的检查,并且 API 的使用体验更好。
* ssh-add(1)、ssh(1)、ssh-keygen(1):修复当程序在后台进程组中启动、没有 TTY 且某些信号被忽略时,密码输入导致的自旋(spin)问题。
bz3995
* scp(1):禁止接收的 scp -O 文件名中出现 NUL 字节。
这在正常操作中是无法触及的。
由 Chua Wei Xun 报告。
* ssh-keygen(1)、ssh(1)、sshd(8):实现对写入 OpenSSH 格式私钥或加载此类私钥时所接受的 KDF 轮数上限。
该上限设置得相当高(1M),但可以确保:当某个服务被传入一把轮数高得离谱的坏密钥时,解析最终仍能完成。
* ssh-keygen(1):将默认的 KDF 轮数从 24 提高到 32(这是线性增加,不像 bcrypt(3) 那样是指数级的)。
* ssh(1):使 StreamLocalBindMask 正确遵守 Host/Match 块,并按照文档说明实现"先匹配者优先"(first-match-wins)。
bz4013
* sshd(8):使 StreamLocalBindMask 正确实现先匹配者优先。
可移植性
-----------
* 所有组件:移除 NetBSD BROKEN_READ_COMPARISON 的规避措施(workaround)。
该措施似乎已不再需要,并且会导致认证前 CPU 空转。
* sshd(8):在启用 SELinux 支持时,不再让 sshd 链接 libselinux(注意:sshd-auth 和 sshd-session 辅助程序二进制文件仍会链接该库)。
* sshd(8):允许 seccomp 沙箱中出现 madvise(..., MADV_DONTNEED_LOCKED);GrapheneOS 加固版分配器需要它。
bz4001
* sshd(8):限制 seccomp 沙箱所接受的 mremap(2) 标志。
现在只接受 MREMAP_MAYMOVE,因为其他标志在攻击链中可能具有某种用途。
报告人:Mohammad Hossein Abedini。
* sshd(8):允许在 Match 中使用 PAMServiceName(该能力在 10.4 中出现回归)。
在重构服务器选项解析过程中,Match 块中设置 PAMServiceName 的能力被意外禁用了。
* sshd(8):已移除 `--disable-fd-passing` configure 选项。
校验和:
==========
- SHA1 (openssh-10.6.tar.gz) = 096e9cd60cd08e0acacfe16b615144f8c0463da5
- SHA256 (openssh-10.6.tar.gz) = 0lP9h9/QH3k667vqbxKhkkusc3CN5iKUiDNI9fsR06A=
- SHA1 (openssh-10.6p1.tar.gz) = e6a34f5625e20172b214c50ebd4e0dcb4fd18013
- SHA256 (openssh-10.6p1.tar.gz) = qdyVZd/+hkD2TYY80poyvEo9vewFZqf8RMXW7nZ9Xzk=
请注意,SHA256 签名采用 base64 编码,而不是十六进制(十六进制是大多数校验工具的默认格式)。
用于签署发行版的 PPGP 密钥可从镜像站点获取:
https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/RELEASE_KEY.asc
报告缺陷:
==============
- 请阅读 https://www.openssh.com/report.html
安全漏洞应直接发送至 [email protected]
```
---
### OpenSSH 10\.5 (https://www.openssh.org/txt/release-10.5)/10\.5p1 (https://www.openssh.org/txt/release-10.5)\(2026\-08\-11\)
```
OpenSSH 10.5 已于 2026-08-11 发布。可通过 https://www.openssh.com/ 列出的镜像站点获取。
OpenSSH 是一套 100% 完整的 SSH 协议 2.0 实现,并包含 sftp 客户端与服务端支持。
近期 OpenSSH 团队收到了大量安全漏洞报告,其中许多发现来自 AI
```
相似文章
OpenSSH 10.4
OpenSSH 10.4 于 2026 年 7 月 6 日发布,包含安全修复以及对一种结合 ML-DSA 44 和 Ed25519 的复合后量子签名方案的实验性支持。
OpenSSH 10.4/10.4p1 发布
OpenSSH 10.4/10.4p1 发布,包含安全修复和实验性后量子签名支持。
被植入木马的OpenSSH(2002年)
2002年8月,OpenBSD FTP服务器上的OpenSSH源码tarball包被替换为被植入木马的版本,导致了一起安全事件,OpenBSD团队对此作出了响应。
OpenBSD 8.0 正式发布,安全纪录依旧保持完好
OpenBSD 8.0 作为该项目的第 61 个版本正式发布,新增 Intel Arc 显卡支持、AMD64 上 512GB 的内核虚拟地址空间、ARM64 休眠功能、RISC-V 改进,以及 LibreSSL 和 OpenSSH 的更新,同时继续保持其长期以来的安全纪录。
OpenBSD 7.9 发布
OpenBSD 7.9 已发布,包含针对 arm64、amd64、luna88k、riscv64 等架构的平台特定改进,以及各种错误修复和增强的硬件支持。