OpenSSH,作为SSH协议2.0的100%完整实现,已广泛用于各类系统中。近日,其9.4版本正式亮相,带来了众多期待的新功能,以及对已知问题的修复。同时,为保持协议的安全性与高效性,此次更新中还涉及了一些可能的兼容性更改。接下来,我们将为您详细解析这一版本的主要亮点、更改内容以及它意味着什么。

OpenSSH 是 100% 完整的 SSH 协议 2.0 实现,且包括 sftp 客户端和服务器支持。

OpenSSH 9.4 现已发布,此版本修复了许多 bug 并添加了一些小功能。

可能不兼容的更改

此版本删除了对旧版本 libcrypto 的支持。OpenSSH 现在需要 LibreSSL >= 3.1.0 或 OpenSSL >= 1.1.1。注意,这些版本已被其上游供应商弃用。

ssh-agent (1):PKCS#11 模块现在必须以完整路径指定。以前 dlopen (3) 可以在系统库目录中搜索它们。

新功能

ssh (1):允许通过 ssh -W 转发 Domain sockets。
ssh (1):向 ssh (1) 添加对 configuration tags 的支持。这添加了 ssh_config (5) “Tag” 指令和相应的 “Match tag” 谓词,可用于选择块配置类似于 pf.conf (5) 同名关键字的配置块。

ssh (1):添加 “match localnetwork” 谓词。这样就可以匹配可用网络接口的地址,并可根据网络位置改变有效的客户端配置。

ssh (1)、sshd (8)、ssh-keygen (1):KRL 扩展的基础设施支持。这定义了可选 KRL 扩展的 defines wire 格式,并实现新 submessages 的解析。目前还不支持实际的扩展。

sshd (8) : 现在 AuthorizedPrincipalsCommand 和 AuthorizedKeysCommand 接受两个额外的 % 扩展序列:% D 扩展为连接会话的路由域,% C 扩展为连接源和目的地的地址和端口号。

ssh-keygen (1) : 将用于为受密码保护的密钥文件生成对称加密密钥的 bcrypt KDF 的默认工作因子(轮数)提高 50%。

Bug 修复

ssh-agent (1):通过为每个加载的提供程序运行单独的 ssh-pkcs11-helpers,改进加载的 PKCS#11 模块之间的隔离。

ssh (1):make -f (fork after authentication) 在包括 ControlPersist 在内的多路复用连接中正常工作。

ssh (1):使 ConnectTimeout 应用于多路复用套接字,而不仅仅是网络连接。仅适用于网络连接。

ssh-agent (1) , ssh (1):通过在加载请求的模块之前检查其是否包含所需的符号,改进了对加载无效 PKCS#11 模块的防御。

sshd (8):在 sshd_config 中,当 AuthorizedKeysCommand 出现在 AuthorizedPrincipalsCommand 之前时,修正 AuthorizedPrincipalsCommand。自 OpenSSH 8.7 以来,在这种情况下 AuthorizedPrincipalsCommand 指令被错误地忽略了。

ALL:修复一些内存泄漏和 unreachable/harmless 的整数溢出。

ssh-agent (1)、ssh (1):不要截断从 PKCS#11 模块记录的字符串

sshd (8)、ssh (1):更好地验证 ssh_config 和 sshd_config 中的 CASignatureAlgorithms。以前,该指令可接受证书算法名称,但由于 OpenSSH 不支持 CA 链,这些名称在实际中无法使用。

ssh (1) : 使 ssh -Q CASignatureAlgorithms 仅列对 CA 签名有效的签名算法。算法。以前的行为是列出所有签名算法,包括证书算法。

ssh-keyscan (1):优雅地处理 rlimits 或最大打开文件数大于 INT_MAX 的系统

ssh-keygen (1):修复在多个密钥上运行 ssh-keygen -l 时不显示 “no comment” 的问题,其中一个密钥有注释,而后面的其他密钥没有。

scp (1)、sftp (1):调整 ftruncate () 逻辑以处理重新排序请求的服务器。以前,如果服务器对请求重新排序,那么生成的文件就会被错误地截断。

ssh (1):当 CanonicalizeHostname=yes 和 ProxyJump 明确设置为 "none" 时,不要错误地禁用主机名规范化。

scp (1):复制 local->remote 时,在打开与服务器的 SFTP 连接之前检查源文件是否存在。

可移植性

ALL:针对不同平台和配置组合的大量构建修复。

sshd (8):提供已弃用的 SELinux matchpathcon () 函数的替代程序。

ALL:放宽对 OpenSSL >=3 的 libcrypto 版本检查。在 OpenSSL 3.0 之后,ABI 兼容性的保证范围更广(只有库的 major 必须匹配,而不是早期版本中的 major 和 minor)。

修复某些测试中使用的 sk-dummy.so FIDO 提供程序模块的构建问题。

详情可查看更新公告:https://www.openssh.com/releasenotes.html   OpenSSH 9.4的发布进一步推动了SSH协议的发展和完善。无论是新添加的功能,还是对已知问题的修复,都反映出开发团队对产品质量的高度重视和不断追求创新的决心。然而,对于开发者和系统管理员来说,理解和适应可能的兼容性更改同样关键。我们建议用户及时查看官方更新公告,确保系统的平稳迁移与升级。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。