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 提供程序模块的构建问题。