七月初的这次更新来得不算突然,但分量足够重。OpenSSH 10.4 在 2026 年 7 月 6 日悄然上线,没有大张旗鼓的宣传,却带着一揽子安全补丁和一项颇具前瞻性的技术------后量子加密支持的实验性引入。对于每天依赖 SSH 隧道管理服务器的技术人员来说,这绝不是一次可以忽略的常规版本迭代。

那些藏在日常操作里的安全隐患
很多人用 SSH 和 SFTP 久了,会下意识地觉得"连接上就没问题了"。但 OpenSSH 10.4 的更新日志告诉我们,危险往往藏在最不起眼的交互细节里。
比如 sftp 命令行操作。当你执行类似 sftp host:/path . 这样的下载指令时,如果对面是一台被攻陷的恶意服务器,它完全有能力把文件重定向到你意料之外的位置。这个漏洞的利用门槛不算高,毕竟命令行下载是运维人员的日常动作。OpenSSH 10.4 这次把这个口子堵上了。
scp 的情况也没好到哪去。远程到远程的复制过程中,恶意服务器曾经可以突破目标目录的边界,把文件写到不该出现的地方。这种"越界写入"在自动化脚本里尤其危险------你以为文件乖乖躺在 /backup 里,实际上它可能已经跑到了系统关键路径。

sshd 这边修复的问题更值得细品。internal sftp 模式下的静默截断漏洞,会导致第九个命令行参数之后的安全选项被直接丢弃。换句话说,你精心配置的安全策略可能在不知不觉中被"吃掉"了一部分。另外,那个被 Orange 网络防御团队标记的最小认证延迟问题,也终于在这个版本里得到了修正。
GSSAPIAuthentication 相关的预认证拒绝服务攻击同样得到了处理。攻击者不需要成功登录,只需要在认证阶段动手脚,就能让服务端的内存被无限消耗。这种"不进门就搞破坏"的打法,对暴露在公网的 SSH 服务威胁极大。
还有一个由研究员林振鹏(Leo)报告的 ssh 客户端问题:如果服务器在会话中途更换了主机密钥,客户端侧会出现"释放后使用"(use-after-free)的内存错误。这种 bug 在 C 语言程序里一向是噩梦级别的存在,轻则崩溃,重则可能被利用执行任意代码。

协议层面的"铁腕"加固
OpenSSH 10.4 这次不只是修修补补,还主动打破了一些旧有的兼容性行为。
最狠的一刀砍在认证后的密钥重新交换环节。以前,传输协议允许对等端在这个过程中发送非 KEX 消息,恶意方可以利用这个空隙缓冲大量消息,慢慢耗尽服务端的内存。现在,只要检测到这种"不合时宜"的消息,连接会被直接断开。对那些依赖老旧客户端或者非标准实现的系统来说,这可能意味着升级后连不上服务器------但安全团队显然认为这个代价值得付。
Linux 上的安全沙箱机制也变了性子。以前沙箱初始化失败只是记一笔日志,程序继续跑;现在直接致命退出。如果你的内核缺少必要的功能,必须在编译阶段显式禁用沙箱,而不是让它半死不活地挂着。这个改动看起来有点霸道,实际上是在逼管理员正视环境的安全基线。
sshd -G 的配置转储模式也换了输出格式,指令名改成了大小写混合的形式。表面上是个小调整,写自动化脚本的人估计要骂娘------旧的解析逻辑大概率会翻车。这种"破坏性变更"在 OpenSSH 的历史上不算多见,说明开发团队对向后兼容的容忍度正在降低。

后量子加密:从论文走向实验场
如果说漏洞修复是"还债",那么 ML-DSA 44 与 Ed25519 的复合签名方案就是"投资未来"了。
量子计算的威胁已经不是科幻小说的情节。"先收集,后解密"(harvest now, decrypt later)的攻击模式意味着,今天的加密流量可能被存下来,等量子计算机成熟后再破译。对于 SSH 这种承载着大量敏感操作的管理协议来说,这简直是悬在头顶的达摩克利斯之剑。
OpenSSH 10.4 引入的复合签名方案,把 NIST 标准化的后量子算法 ML-DSA 44 和经典的 Ed25519 绑在一起。逻辑很直白:即使量子计算机将来破解了 Ed25519,ML-DSA 那部分依然能守住防线;反过来,如果 ML-DSA 被发现有什么缺陷,Ed25519 还能撑住场面。这种"双保险"设计是目前业界公认的过渡策略。
不过别急着高兴,这个功能默认没开。你需要显式配置,并用 ssh-keygen -t mldsa44-ed25519 生成专门的密钥对。开发团队的态度很谨慎------毕竟整个后量子 SSH 签名的标准化工作还在 IETF 的草案阶段,多个 competing RFC 草案同时在推进,谁最后成为正式标准还不好说。OpenSSH 这次算是给尝鲜者开了个口子,但距离大规模生产环境部署,估计还得等几个版本。

性能与代码质量的隐性提升
除了看得见的安全补丁和 flashy 的新算法,OpenSSH 10.4 在底层也做了不少打磨。
ssh 和 sshd 的通配符匹配器换成了基于 NFA 的实现。老版本在最坏情况下会出现指数级的时间复杂度,搞过大规模配置管理的运维应该深有体会------一个设计不当的 Match 规则能让连接建立慢到令人发指。新实现把这个性能陷阱彻底填平了。
FIDO 令牌密钥下载的修正、sftp 的越界读取修复、sshd_config 解析的重构,以及加密签名代码中边界检查的加强,这些改动单独看都不算惊艳,但堆在一起就是代码基底的全面加固。尤其是 sshd_config 解析器的重构,让权限分离的序列化流程清晰了不少,这对审计和后续维护都是好事。
可移植性方面,fmt_scaled.c 和 getrrsetbyname.c 与上游 OpenBSD 同步,错误路径上的内存泄漏也被逐一清理。这些细节不会出现在更新公告的头条里,却是长期稳定运行的根基。
怎么拿到这个版本
源码包有两种形式:openssh-10.4.tar.gz 和 openssh-10.4p1.tar.gz。官方提供了 SHA1 和 base64 编码的 SHA256 校验和,签名密钥通过镜像站点分发。生产环境升级前,建议先在测试环境跑一遍,尤其是那些依赖 sshd -G 输出或者自定义沙箱配置的自动化流程。

写在最后
OpenSSH 10.4 不像某些大版本更新那样改头换面,但它的价值恰恰在于这种"润物细无声"的扎实。从堵住日常命令行操作里的安全死角,到提前布局后量子时代的防御体系,再到把协议实现中的性能陷阱一个个铲平------这些工作不会上热搜,却直接关系着全球数百万台服务器的安全基线。
对于运维和开发来说,这个版本没有"不升级"的选项。那些漏洞的利用条件并不苛刻,而后量子支持的加入则意味着 OpenSSH 正在从"当下的安全工具"向"未来十年的安全基础设施"进化。早点适配,总比被迫追赶要好。