查看源代码 SSH 发行说明

Ssh 5.2.5

已修复的错误和故障

  • 在 OTP-27 迁移到 markdown 后,文档已进行优化。

    自有 ID: OTP-19335 辅助 ID: PR-9021

Ssh 5.2.4

已修复的错误和故障

  • 通过此更改,ssh 连接在接收到已终止通道的 exit-signal 消息时不会崩溃。

    自有 ID: OTP-19326 辅助 ID: PR-8995, GH-8929

Ssh 5.2.3

已修复的错误和故障

  • 通过此更改,ssh 客户端连接设置过程中消除了竞争条件。

    自有 ID: OTP-19124 辅助 ID: GH-7550, PR-8766

  • 通过此更改,ssh:connect 不受队列中 EXIT 消息的影响。

    自有 ID: OTP-19246 辅助 ID: GH-8223, PR-8854

  • 通过此更改,ssh 在从用户收到的套接字选项后附加 {active, false} 选项 - 以便始终使用 false 值。

    自有 ID: OTP-19247 辅助 ID: PR-8226

Ssh 5.2.2

已修复的错误和故障

  • 使用 TCP 端口号参数启动的 SSh 守护程序现在会重试获取侦听套接字,然后再向用户返回错误。

    自有 ID: OTP-19170 辅助 ID: GH-7746

  • 通过在投递套接字控制通知之前监视连接处理程序进程,提高了健壮性。

    自有 ID: OTP-19173 辅助 ID: PR-8310

Ssh 5.2.1

已修复的错误和故障

  • 通过此更改,修复了连接关闭和自动窗口调整之间的竞争条件。

    自有 ID: OTP-19109 辅助 ID: PR-8345

Ssh 5.2

已修复的错误和故障

  • 现在为 SSH 进程分配了标签,以便进行故障排除。

    自有 ID: OTP-19017 辅助 ID: PR-8249

  • 通过此更改,ssh 客户端将自动调整通过 SSH 远程执行的命令的传输窗口大小。

    自有 ID: OTP-19057 辅助 ID: PR-8345, GH-7483

改进和新功能

  • 现在,shell 会对文档帮助命令 (h(Module))、自动完成和搜索命令的长输出进行分页。

    自有 ID: OTP-18846 辅助 ID: PR-7845

  • 文档已迁移为使用 Markdown 和 ExDoc。

    自有 ID: OTP-18955 辅助 ID: PR-8026

  • 更新了所有 API 模块的类型和规范。

    自有 ID: OTP-18961

Ssh 5.1.4.4

已修复的错误和故障

  • 通过此更改,ssh 连接在接收到已终止通道的 exit-signal 消息时不会崩溃。

    自有 ID: OTP-19326 辅助 ID: PR-8995, GH-8929

Ssh 5.1.4.3

已修复的错误和故障

  • 通过此更改,ssh 客户端连接设置过程中消除了竞争条件。

    自有 ID: OTP-19124 辅助 ID: GH-7550, PR-8766

  • 通过此更改,ssh:connect 不受队列中 EXIT 消息的影响。

    自有 ID: OTP-19246 辅助 ID: GH-8223, PR-8854

  • 通过此更改,ssh 在从用户收到的套接字选项后附加 {active, false} 选项 - 以便始终使用 false 值。

    自有 ID: OTP-19247 辅助 ID: PR-8226

Ssh 5.1.4.2

已修复的错误和故障

  • 通过此更改,使用 TCP 端口号参数启动的 ssh 守护程序会重试获取侦听套接字,然后再向用户返回错误。

    自有 ID: OTP-19170 辅助 ID: GH-7746

  • 通过此更改,通过在投递套接字控制通知之前监视连接处理程序进程,提高了健壮性。

    自有 ID: OTP-19173 辅助 ID: PR-8310

Ssh 5.1.4.1

已修复的错误和故障

  • 通过此更改,ssh 客户端将自动调整通过 SSH 远程执行的命令的传输窗口大小。

    自有 ID: OTP-19057 辅助 ID: PR-8345, GH-7483

  • 通过此更改,修复了连接关闭和自动窗口调整之间的竞争条件。

    自有 ID: OTP-19109 辅助 ID: PR-8345

Ssh 5.1.4

已修复的错误和故障

  • 通过此更改,修复了所有者和组文件属性解码,并产生整数类型的值。

    自有 ID: OTP-19013 辅助 ID: GH-7897, PR-8220

Ssh 5.1.3

已修复的错误和故障

  • 通过此更改,不会为 ssh 客户端启动 acceptor_sup,因为它在该角色中不需要。

    自有 ID: OTP-18974

  • 通过此更改,ssh 更倾向于使用更安全的算法,并更新了文档以反映这一点。

    自有 ID: OTP-18986

  • 通过此更改,KEX 严格终端消息会以调试详细级别发出。

    自有 ID: OTP-19002 辅助 ID: ERIERL-1041

  • 修复了在 user_interactive 模式下读取 ssh 客户端的密码。

    自有 ID: OTP-19007 辅助 ID: ERIERL-1049

Ssh 5.1.2

已修复的错误和故障

  • 通过此更改,Curve25519 和 Curve448 KEX 方法成为首选(与 RFC8731 相关)。

    自有 ID: OTP-18964

Ssh 5.1.1

已修复的错误和故障

  • 通过此更改(响应 CVE-2023-48795),ssh 可以与支持它的对等方协商“严格 KEX”OpenSSH 扩展;此外,'[email protected]' 算法成为不太受欢迎的密码。

    如果不能在连接双方确保严格的 KEX 可用性,可以使用标准 ssh 配置禁用受影响的加密模式(CHACHA 和 CBC)。这将提供针对漏洞的保护,但代价是会影响互操作性。请参阅在 SSH 中配置算法

    *潜在不兼容性*

    自有 ID: OTP-18897

Ssh 5.1

已修复的错误和故障

  • 将某些文件中的意外 Erlang 公共许可证 1.1 标头替换为预期的 Apache 许可证 2.0 标头。

    自有 ID: OTP-18815 辅助 ID: PR-7780

  • 避免向哑 ssh 客户端输出 ansi 转义序列。

    自有 ID: OTP-18861 辅助 ID: PR-7627

  • 通过此更改,连接处理程序不会执行套接字操作,直到它成为套接字所有者。如果连接处理程序尝试使用其所有者退出的套接字,则以前可能会发生错误。

    自有 ID: OTP-18869 辅助 ID: PR-7849,GH-7571

改进和新功能

  • 通过此更改,反向搜索可用于 ssh shell 和非哑终端。

    自有 ID: OTP-18730 辅助 ID: PR-7499

Ssh 5.0.1

已修复的错误和故障

  • 向通过 OTP ssh 守护程序连接的 ssh 客户端添加了多行编辑支持。

    自有 ID: OTP-18653 辅助 ID: PR-7242

Ssh 5.0

改进和新功能

  • ssh_cli 已更新为可与新 Erlang shell 实现中引入的更改一起使用。

    自有 ID: OTP-18231 辅助 ID: OTP-17932 PR-6144

  • 在 shell 中键入 Ctrl+L 现在会清除屏幕并重绘当前行,而不仅仅是重绘当前行。要仅重绘当前行,您现在必须键入 Alt+L。这使得 Ctrl+L 的行为更接近 bash 和其他 shell 的工作方式。

    *潜在不兼容性*

    自有 ID: OTP-18285 辅助 ID: PR-6262

  • 弃用 dbg:stop_clear/0,因为它只是 dbg:stop/0 的函数别名

    自有 ID: OTP-18478 辅助 ID: GH-6903

  • 已修复该实现以在适当的地方使用 proc_lib:init_fail/2,3,而不是 proc_lib:init_ack/1,2

    *潜在不兼容性*

    自有 ID: OTP-18490 辅助 ID: OTP-18471, GH-6339, PR-6843

Ssh 4.15.3.8

已修复的错误和故障

  • 通过此更改,ssh 连接在接收到已终止通道的 exit-signal 消息时不会崩溃。

    自有 ID: OTP-19326 辅助 ID: PR-8995, GH-8929

Ssh 4.15.3.7

已修复的错误和故障

  • 通过此更改,ssh 客户端连接设置过程中消除了竞争条件。

    自有 ID: OTP-19124 辅助 ID: GH-7550, PR-8766

  • 通过此更改,ssh:connect 不受队列中 EXIT 消息的影响。

    自有 ID: OTP-19246 辅助 ID: GH-8223, PR-8854

  • 通过此更改,ssh 在从用户收到的套接字选项后附加 {active, false} 选项 - 以便始终使用 false 值。

    自有 ID: OTP-19247 辅助 ID: PR-8226

Ssh 4.15.3.6

已修复的错误和故障

  • 使用 TCP 端口号参数启动的 SSh 守护程序现在会重试获取侦听套接字,然后再向用户返回错误。

    自有 ID: OTP-19170 辅助 ID: GH-7746

  • 通过在投递套接字控制通知之前监视连接处理程序进程,提高了健壮性。

    自有 ID: OTP-19173 辅助 ID: PR-8310

Ssh 4.15.3.5

已修复的错误和故障

  • 通过此更改,ssh 客户端将自动调整通过 SSH 远程执行的命令的传输窗口大小。

    自有 ID: OTP-19057 辅助 ID: PR-8345, GH-7483

  • 通过此更改,修复了连接关闭和自动窗口调整之间的竞争条件。

    自有 ID: OTP-19109 辅助 ID: PR-8345

Ssh 4.15.3.4

已修复的错误和故障

  • 通过此更改,修复了所有者和组文件属性解码,并产生整数类型的值。

    自有 ID: OTP-19013 辅助 ID: GH-7897, PR-8220

Ssh 4.15.3.3

已修复的错误和故障

  • 通过此更改,ssh 更倾向于使用更安全的算法,并更新了文档以反映这一点。

    自有 ID: OTP-18986

  • 通过此更改,KEX 严格终端消息会以调试详细级别发出。

    自有 ID: OTP-19002 辅助 ID: ERIERL-1041

Ssh 4.15.3.2

已修复的错误和故障

  • 通过此更改,Curve25519 和 Curve448 KEX 方法成为首选(与 RFC8731 相关)。

    自有 ID: OTP-18964

Ssh 4.15.3.1

修复的 Bug 和故障

  • 通过此更改,连接处理程序不会执行套接字操作,直到它成为套接字所有者。如果连接处理程序尝试使用其所有者退出的套接字,则以前可能会发生错误。

    自有 ID: OTP-18869 辅助 ID: PR-7849,GH-7571

  • 通过此更改(响应 CVE-2023-48795),ssh 可以与支持它的对等方协商“严格 KEX”OpenSSH 扩展;此外,'[email protected]' 算法成为不太受欢迎的密码。

    如果不能在连接双方确保严格的 KEX 可用性,可以使用标准 ssh 配置禁用受影响的加密模式(CHACHA 和 CBC)。这将提供针对漏洞的保护,但代价是会影响互操作性。请参阅在 SSH 中配置算法

    *潜在不兼容性*

    自有 ID: OTP-18897

Ssh 4.15.3

修复的 Bug 和故障

  • 通过此更改,可以正确解码 PKCS8 格式的私钥文件,并可以使用此类密钥启动 SSH 守护进程。

    自有 ID: OTP-18446 辅助 ID: GH-6475

改进和新功能

  • 将 size/1 替换为 tuple_size/1 或 byte_size/1

    size/1 BIF 没有被 JIT 优化,其使用可能导致 Dialyzer 的类型变差。

    当已知被测试的值必须是元组时,应始终首选 tuple_size/1

    当已知被测试的值必须是二进制数据时,应首选 byte_size/1。但是,byte_size/1 也接受位串(将大小向上舍入为整数个字节),因此必须确保调用 byte_size/ 之前调用了 is_binary/1 以确保位串被拒绝。请注意,编译器会删除对 is_binary/1 的冗余调用,因此如果不确定之前的代码是否已确保参数是二进制数据,则在调用 byte_size/1 之前添加 is_binary/1 测试没有坏处。

    自有 ID: OTP-18432 辅助 ID: GH-6672,PR-6793,PR-6784,PR-6787,PR-6785,PR-6682,PR-6800,PR-6797,PR-6798,PR-6799,PR-6796,PR-6813,PR-6671,PR-6673,PR-6684,PR-6694,GH-6677,PR-6696,PR-6670,PR-6674

Ssh 4.15.2

修复的 Bug 和故障

  • 通过此更改,当格式化某些不成功的连接的信息报告时,ssh 应用程序不会崩溃。

    自有 ID: OTP-18386 辅助 ID: PR-6611

  • 通过此更改,ssh 不会记录过长的消息。

    自有 ID: OTP-18417 辅助 ID: DAFH-1349,ERIERL-888,IA18357

Ssh 4.15.1

修复的 Bug 和故障

  • 当连接被对等方关闭时,ssh_conection_handler 的正常关闭

    自有 ID: OTP-18326 辅助 ID: ERIERL-865

Ssh 4.15

修复的 Bug 和故障

  • 处理通道关闭时罕见的竞争条件。

    自有 ID: OTP-18220 辅助 ID: ERIERL-666, ERIERL-661

改进和新功能

  • 新的 ssh 选项 no_auth_needed 可跳过 ssh 身份验证。谨慎使用!

    自有 ID: OTP-18134 辅助 ID: GH-6021

  • 此更改修复了为 inets/httpd 示例生成的 dialyzer 警告(包括对 ssh_sftp 模块规范的必要调整)。

    自有 ID: OTP-18178 辅助 ID: ERIERL-833, ERIERL-834, ERIERL-835

  • 新函数 ssh:daemon_replace_options/2 可以更改正在运行的 SSH 服务器中的 Options

    已建立的连接不受影响,仅影响调用此新函数后创建的连接。

    自有 ID: OTP-18196

  • 添加一个超时作为选项 max_initial_idle_time。它会关闭在超时时间内未分配通道的连接。

    有关超时的更多信息,请参阅用户指南的 超时部分中的 加固章节。

    自有 ID: OTP-18207 辅助 ID: PR-6231

Ssh 4.14.1

修复的 Bug 和故障

  • 可以使用参数 max_log_item_len 限制日志中的二进制文件。默认值为 500 字节。

    自有 ID: OTP-18094

Ssh 4.14

改进和新功能

  • ssh 内部的 Edward 曲线(ed25519 和 ed448)的表示形式具有临时表示形式(ed_pri 和 ed_pub)。

    现在已更改为 public_key 形式。有关更多信息,请参阅手册。

    *潜在不兼容性*

    自有 ID: OTP-17920

  • 以前的内部函数 ssh_file:extract_public_key/1 已公开记录。

    它之前在内部位于 ssh_transport 中。

    自有 ID: OTP-18079 辅助 ID: GH-5767

Ssh 4.13.2.6

修复的 Bug 和故障

  • 通过此更改,ssh 更倾向于使用更安全的算法,并更新了文档以反映这一点。

    自有 ID: OTP-18986

  • 通过此更改,KEX 严格终端消息会以调试详细级别发出。

    自有 ID: OTP-19002 辅助 ID: ERIERL-1041

  • 通过此更改,修复了所有者和组文件属性解码,并产生整数类型的值。

    自有 ID: OTP-19013 辅助 ID: GH-7897, PR-8220

Ssh 4.13.2.5

修复的 Bug 和故障

  • 通过此更改,Curve25519 和 Curve448 KEX 方法成为首选(与 RFC8731 相关)。

    自有 ID: OTP-18964

Ssh 4.13.2.4

修复的 Bug 和故障

  • 通过此更改,连接处理程序不会执行套接字操作,直到它成为套接字所有者。如果连接处理程序尝试使用其所有者退出的套接字,则以前可能会发生错误。

    自有 ID: OTP-18869 辅助 ID: PR-7849,GH-7571

  • 通过此更改(响应 CVE-2023-48795),ssh 可以与支持它的对等方协商“严格 KEX”OpenSSH 扩展;此外,'[email protected]' 算法成为不太受欢迎的密码。

    如果不能在连接双方确保严格的 KEX 可用性,可以使用标准 ssh 配置禁用受影响的加密模式(CHACHA 和 CBC)。这将提供针对漏洞的保护,但代价是会影响互操作性。请参阅在 SSH 中配置算法

    *潜在不兼容性*

    自有 ID: OTP-18897

Ssh 4.13.2.3

修复的 Bug 和故障

  • 通过此更改,修复了 ssh_connection_handler 模块中与错误日志记录相关的崩溃。

    自有 ID: OTP-18620 辅助 ID: OTP-18386,PR-6611

Ssh 4.13.2.2

修复的 Bug 和故障

  • 通过此更改,当格式化某些不成功的连接的信息报告时,ssh 应用程序不会崩溃。

    自有 ID: OTP-18386 辅助 ID: PR-6611

  • 通过此更改,ssh 不会记录过长的消息。

    自有 ID: OTP-18417 辅助 ID: DAFH-1349,ERIERL-888,IA18357

Ssh 4.13.2.1

修复的 Bug 和故障

  • 可以使用参数 max_log_item_len 限制日志中的二进制文件。默认值为 500 字节。

    自有 ID: OTP-18094

Ssh 4.13.2

修复的 Bug 和故障

  • 修复 Makefile 依赖项错误。

    自有 ID: OTP-17847 辅助 ID: PR-5574 GH-5548

  • 修复了 OpenSSH 格式 openssh_key_v1 中 Ed25519/Ed448 密钥的错误的 OpenSSH 解码。

    自有 ID: OTP-17868 辅助 ID: PR-5520

  • 更正了 ssh_file 类型,特别是针对实验性的 openssh-key-v1 编码。

    自有 ID: OTP-17912 辅助 ID: GH-5680

  • 使用 ssh:encode/2 编码时,私有 ED 密钥的标签不正确。

    该元组的第一个元素为 ed_priv,但应为 ed_pri。现在已更正。

    *潜在不兼容性*

    自有 ID: OTP-17928 辅助 ID: PR-5679

改进和新功能

  • 在 RFC 4716 格式(“-----BEGIN EC PRIVATE KEY-----”)中添加对 Ed25519/Ed448 SSH 主机密钥的支持,例如 openssl 或通过 Erlang 函数(即 public_key:generate_key({namedCurve, ed25519}))生成。

    仍然支持由 ssh-keygen 生成的 Ed25519 SSH 主机密钥。

    自有 ID: OTP-17857 辅助 ID: PR-5532

Ssh 4.13.1

修复的 Bug 和故障

  • OTP-24 中缺少 ssh 服务器 parallel_login 选项

    自有 ID: OTP-17850 辅助 ID: ERIERL-764

Ssh 4.13

修复的 Bug 和故障

  • connect_timeout 选项的值现在用作协商超时的默认值。

    自有 ID: OTP-17707 辅助 ID: ERIERL-706

改进和新功能

  • 在 connect/2,3,4 中添加更好的错误处理。检测不正确的参数,并返回信息性错误元组,而不是抛出 function_clause 或类似错误。

    自有 ID: OTP-17515 辅助 ID: ERIERL-648

  • 使 ssh 算法选择更好地处理加密 fips 模式中的动态更改。

    自有 ID: OTP-17795

Ssh 4.12.5

修复的 Bug 和故障

  • 修复了接受器循环中的竞争条件:如果客户端在 tcp 连接后立即断开连接,则服务器可能会停止处理该地址:端口上的连接。

    自有 ID: OTP-17764 辅助 ID: ERIERL-726

Ssh 4.12.4

修复的 Bug 和故障

  • 修复了客户端子系统启动缓慢(>30 秒)可能导致日志条目包含密码的问题。

    自有 ID: OTP-17390 辅助 ID: ERIERL-648

  • 修复了作为 sftp 服务器运行时,客户端请求目录内容列表时的错误。

    修复方法是在 ssh_sftpd:get_attrs/5 内部函数中将错误代码 {error, eacces} 处理为 {error, enoent};也就是说,直接跳过它。

    自有 ID: OTP-17586 辅助 ID: GH-5014

改进和新功能

  • “密钥交换失败”信息报告现在更具信息性。

    自有 ID: OTP-17450 辅助 ID: ERIERL-655

Ssh 4.12.3

修复的错误和故障

  • 从进度报告和主管报告中过滤敏感数据(密码等)。

    自有 ID: OTP-17468 辅助 ID: ERIERL-656

Ssh 4.12.2

修复的错误和故障

  • 避免在 ssh known_hosts 文件中出现额外的空白行

    自有 ID: OTP-17427

Ssh 4.12.1

改进和新功能

Ssh 4.12

修复的错误和故障

  • 此应用程序已添加了缺少的运行时依赖项。

    自有 ID: OTP-17243 辅助 ID: PR-4557

  • 更改了发送窗口处理,以避免在某些情况下初始化过大的窗口。

    自有 ID: OTP-17353

改进和新功能

  • 从 SSH 实现中移除了对 erlang:is_port/1 的使用。

    自有 ID: OTP-16750

  • 内部连接设置重构。

    自有 ID: OTP-17051

  • 将 SSH fsm 重构为(希望)更易于理解的 gen_statem 回调文件集。

    自有 ID: OTP-17140

  • RSA SHA1 签名/验证变体默认禁用。也就是说,ssh-rsa 默认禁用,以及来自 id_rsa 和 ssh_host_rsa_key 的 RSA 密钥的 SHA1 签名/验证也禁用。所有 SHA2 签名/验证默认启用。

    原因是 SHA1 现在被认为容易被破解。

    要启用带有 SHA1 的 RSA,例如对于非常旧且不安全的对等方,请参阅用户指南章节在 SSH 中配置算法中的示例 9

    *潜在不兼容性*

    自有 ID: OTP-17259 辅助 ID: OTP-16511, ERIERL-619

  • 使 ssh supervisor 适应 supervisor 中的新 'significant' 和 'auto_shutdown' 标志。

    自有 ID: OTP-17322 辅助 ID: PR-4638, EEP-56, OTP-17334

  • 函数 public_key:ssh_encode/2、public_key:ssh_decode/2、public_key:ssh_hostkey_fingerprint/1 和 public_key:ssh_hostkey_fingerprint/2 已弃用。

    SSH 中提供了替换函数,请参阅 Erlang/OTP 文档中的弃用章节。

    自有 ID: OTP-17352

Ssh 4.11.1.7

修复的错误和故障

  • 通过此更改(响应 CVE-2023-48795),ssh 可以与支持它的对等方协商“严格 KEX”OpenSSH 扩展;此外,'[email protected]' 算法成为不太受欢迎的密码。

    如果无法确保在连接双方都严格使用 KEX,则可以使用标准的 ssh 配置禁用受影响的加密模式(CHACHA 和 CBC)。这将提供针对漏洞的保护,但会影响互操作性。请参阅 SSH 用户指南中的配置算法。

    *潜在不兼容性*

    自有 ID: OTP-18897

  • 通过此更改,KEX 严格终端消息会以调试详细级别发出。

    自有 ID: OTP-19002 辅助 ID: ERIERL-1041

Ssh 4.11.1.6

修复的错误和故障

  • 可以使用参数 max_log_item_len 限制日志中的二进制文件。默认值为 500 字节。

    自有 ID: OTP-18094

Ssh 4.11.1.5

修复的错误和故障

  • 修复了多次重启后服务器被阻塞的问题。适用于选项为 {parallel_login,true}{max_sessions, int()>0} 的守护进程。

    自有 ID: OTP-17835 辅助 ID: ERIERL-721

Ssh 4.11.1.4

修复的错误和故障

  • connect_timeout 选项的值现在用作协商超时的默认值。

    自有 ID: OTP-17707 辅助 ID: ERIERL-706

Ssh 4.11.1.3

修复的错误和故障

  • 从进度报告和主管报告中过滤敏感数据(密码等)。

    自有 ID: OTP-17468 辅助 ID: ERIERL-656

改进和新功能

  • “密钥交换失败”信息报告现在更具信息性。

    自有 ID: OTP-17450 辅助 ID: ERIERL-655

Ssh 4.11.1.2

修复的错误和故障

  • 避免在 ssh known_hosts 文件中出现额外的空白行

    自有 ID: OTP-17427

Ssh 4.11.1.1

修复的错误和故障

  • 修复了客户端子系统启动缓慢(>30 秒)可能导致日志条目包含密码的问题。

    自有 ID: OTP-17390 辅助 ID: ERIERL-648

Ssh 4.11.1

修复的错误和故障

  • 当在之前有通道的空连接上的超时时间内打开通道时,未取消 idle_time 定时器。

    自有 ID: OTP-17279

Ssh 4.11

改进和新功能

  • 在 sftp 版本 3 中用于显示文件信息的 SSH_FXP_NAME 响应中的长名称字段现在包含 sftp 草案中定义的扩展格式。它类似于 Unix 系统上 "ls -l" 返回的内容。

    自有 ID: OTP-17197 辅助 ID: PR- 3049

Ssh 4.10.8

修复的错误和故障

  • 不要使缓慢的连接设置和拆卸超时。还消除了控制器罕见的崩溃风险。

    自有 ID: OTP-17173 辅助 ID: ERIERL-581

Ssh 4.10.7

修复的错误和故障

  • 即使服务器没有请求 pty,SSH 守护进程也会错误地将 LF 替换为 CRLF。

    自有 ID: OTP-17108 辅助 ID: ERL-1442

Ssh 4.10.6

修复的错误和故障

  • 修复了 ssh cli/shell 处理中的问题。最重要的是

    1. ssh:shell 函数有时会导致输入被回显两次,

    2. ssh:shell 函数没有将 LANG 和 LC_ALL shell 变量传输到连接的服务器,这有时会导致 Unicode 处理错误,

    3. Unicode 并非总是正确地与对等方之间传输。

    自有 ID: OTP-16799

  • SSH 协议消息 SSH_MSG_DISCONNECT 有时会发送而不是 SSH_MSG_CHANNEL_FAILURE

    自有 ID: OTP-16900

  • ssh_cli 模块现在总是将退出状态发送到连接的客户端,以便它们可以使用该状态来检查命令是否成功执行。

    自有 ID: OTP-16908 辅助 ID: PR-2753

改进和新功能

  • 新选项 pk_check_user 允许在进行公钥身份验证时检查服务器中客户端的用户名。

    自有 ID: OTP-16889

Ssh 4.10.5

修复的错误和故障

  • ssh 客户端可以从侦听套接字获取已接受的套接字,并在其上执行 ssh:connect/2。

    来自同一侦听套接字接受的套接字上的多个客户端已停止工作。现在已更正。

    自有 ID: OTP-17021 辅助 ID: ERIERL-567

Ssh 4.10.4.1

修复的错误和故障

  • 从进度报告和主管报告中过滤敏感数据(密码等)。

    自有 ID: OTP-17468 辅助 ID: ERIERL-656

Ssh 4.10.4

修复的错误和故障

  • inet 选项 raw 未从 ssh 选项列表传递到 inet。

    自有 ID: OTP-17016 辅助 ID: ERIERL-562

Ssh 4.10.3

修复的错误和故障

  • 如果连接处理程序进程被强行终止,可能会留下一个 supervisor 子树。这将使 max_sessions 检查选项错误地计数现有会话,并最终阻止进一步的会话。

    自有 ID: OTP-17006 辅助 ID: ERIERL-556

Ssh 4.10.2

修复的错误和故障

  • 修复解码器错误。

    自有 ID: OTP-16904

Ssh 4.10.1

修复的错误和故障

  • 修复了当发送到 ssh-agent 的消息被分成单独的数据包时出现的错误。

    自有 ID: OTP-16761 辅助 ID: PR-2679

  • 修复了如果客户端请求过大的 cli 窗口可能会导致 cli 服务器崩溃的错误。

    自有 ID: OTP-16791 辅助 ID: ERIERL-520

改进和新功能

  • 增加了测试覆盖率。

    自有 ID: OTP-14106

  • 用户指南中添加了关于强化 OTP SSH的章节。

    自有 ID: OTP-16411

  • 用于密钥生成的内部 Diffie-Hellman 高级 API 在旧版且 OpenSSL 现在不支持的 cryptolib 版本(1.0.1 及更早版本)中速度较慢。

    如果仍然使用此类 cryptolib,则会在 crypto 应用程序内部使用低级 API。

    自有 ID: OTP-16774

  • 为守护进程定义了一个新的超时:hello_timeout

    该超时旨在用作简单的 DoS 攻击防护。如果在 TCP 初始连接建立后,客户端在超时限制内没有发送有效的第一个 SSH 消息,它将关闭传入的 TCP 连接。

    出于兼容性原因,初始值为 30 秒,但如果需要,可以降低此值,例如在代码中或在配置文件中。

    内部 ID:OTP-16803

Ssh 4.10

修复的错误和故障

  • 修复 ssh_sftpd 类型规范中的错误。

    内部 ID:OTP-16363

改进和新功能

  • 插件文件 ssh_file.erl,负责默认文件处理,已重构、优化和重写。

    内部 ID:OTP-11688 辅助 ID:OTP-12699

  • OpenSSH 6.5 引入了一种新的密钥文件表示形式,称为 openssh-key-v1

    OTP/SSH 对此格式有一个实验性实现。该实现现在得到改进和支持,但处理加密密钥除外。

    内部 ID:OTP-15434

  • 实现了 TCP/IP 端口转发,也称为隧道技术或 tcp-forward/direct-tcp。在 OpenSSH 客户端中,这对应于 -L 和 -R 选项。

    客户端或服务器监听指定的套接字,当有东西通过 TCP/IP 连接到该套接字时,该连接会在加密隧道中转发到对等方。然后,对等方连接到预定义的 IP/端口对,并充当代理。

    请参阅手册中的 ssh:tcpip_tunnel_to_server/6ssh:tcpip_tunnel_from_server/6

    该功能默认禁用,但可以在启动守护程序时启用。

    内部 ID:OTP-15998 辅助 ID:PR-2376,PR-2368

  • 以前,客户端的 Supervisor 树(在 sshc_sup 下)不完整;通道处理进程使用链接处理,但没有 Supervisor。

    现在,在 sshc_sup 下使用客户端 Supervisor 树进行了更正,类似于在 sshd_sup 下的服务器端 Supervisor 树。

    内部 ID:OTP-16026 辅助 ID:PR-2368,(OTP-15998)

  • 扩展 [email protected] 被添加到 ssh/sftp rename 操作中。

    内部 ID:OTP-16289 辅助 ID:PR-2448

  • 已弃用的 旧 Crypto API 中的函数调用已替换为其替代项的调用。

    内部 ID:OTP-16346

  • 改进了默认的 known_hosts 文件处理,使其包含端口。

    更新了该文件中内容的处理,以支持 完整语法,但以下情况除外:1) 通配符 '?',2) 规范名称中的通配符,以及 3) 选项 '@cert-authority'

    内部 ID:OTP-16506

  • 实现了 MAC(消息授权码)算法

    内部 ID:OTP-16508

  • 默认禁用密钥交换算法 'diffie-hellman-group14-sha1''diffie-hellman-group-exchange-sha1'。原因是 SHA1 现在被认为是不安全的。

    如果需要,可以启用它们,请参阅SSH (App)

    *潜在不兼容性*

    内部 ID:OTP-16509

  • 默认禁用公钥算法 'ssh-dss'。原因是现在认为它是不安全的。

    如果需要,可以启用它,请参阅SSH (App)

    *潜在不兼容性*

    内部 ID:OTP-16510

  • 由于使用了 SHA1,公钥 'ssh-rsa' 现在被认为是不安全的。

    因此,它已被弃用,并且在 OTP-24.0 中将不再默认启用。

    *潜在不兼容性*

    内部 ID:OTP-16511

  • 为文件接口 ssh_file.erl 引入了选项 optimize (optimize_key_lookup)

    该选项允许用户在默认处理(速度快但占用内存)与内存高效但不那么快的处理之间进行选择。此效果可能仅在大型文件中才可见。

    请参阅 ssh_file:is_host_key/5ssh_file:is_auth_key/3 的手册。

    内部 ID:OTP-16512

  • ssh 代理现在在 ssh_agent 密钥回调模块中实现。

    例如,在 ssh:connect/3 中使用选项 {key_cb, {ssh_agent, []}} 启用。

    有关详细信息,请参阅 ssh_agent 手册

    内部 ID:OTP-16513

  • 现在可以在 .config 文件中完成算法配置。

    例如,这对于启用默认禁用的算法很有用。现在可以在 .config 文件中启用它,而无需更改代码。

    请参阅 SSH 用户指南中的“SSH 中的配置”章节。

    内部 ID:OTP-16540

  • 记录了在调用 ssh:connect 和 ssh:daemon 时哪些 gen_tcp 套接字选项无法使用。

    内部 ID:OTP-16589

  • kb_int_fun_4() 添加到 authentication_daemon_options(),以便能够从身份验证函数 pwdfun_4() 返回的用户状态生成动态的键盘交互提示。

    内部 ID:OTP-16622 辅助 ID:PR-2604

Ssh 4.9.1.5

修复的错误和故障

  • 通过此更改(响应 CVE-2023-48795),ssh 可以与支持它的对等方协商“严格 KEX”OpenSSH 扩展;此外,'[email protected]' 算法成为不太受欢迎的密码。

    如果无法确保在连接双方都严格使用 KEX,则可以使用标准的 ssh 配置禁用受影响的加密模式(CHACHA 和 CBC)。这将提供针对漏洞的保护,但会影响互操作性。请参阅 SSH 用户指南中的配置算法。

    *潜在不兼容性*

    自有 ID: OTP-18897

  • 通过此更改,KEX 严格终端消息会以调试详细级别发出。

    自有 ID: OTP-19002 辅助 ID: ERIERL-1041

Ssh 4.9.1.4

修复的错误和故障

  • connect_timeout 选项的值现在用作协商超时的默认值。

    自有 ID: OTP-17707 辅助 ID: ERIERL-706

Ssh 4.9.1.3

修复的错误和故障

  • 当在之前有通道的空连接上的超时时间内打开通道时,未取消 idle_time 定时器。

    自有 ID: OTP-17279

Ssh 4.9.1.2

修复的错误和故障

  • 修复解码器错误。

    自有 ID: OTP-16904

Ssh 4.9.1.1

修复的错误和故障

  • 修复了如果客户端请求过大的 cli 窗口可能会导致 cli 服务器崩溃的错误。

    自有 ID: OTP-16791 辅助 ID: ERIERL-520

改进和新功能

  • 为守护进程定义了一个新的超时:hello_timeout

    如果在超时限制内没有收到客户端发送的有效第一条消息,它将关闭传入的 TCP 连接。

    内部 ID:OTP-16803

Ssh 4.9.1

修复的错误和故障

  • 重新密钥决策和套接字关闭之间存在潜在危险。

    内部 ID:OTP-16462 辅助 ID:ERIERL-464

Ssh 4.9

修复的错误和故障

  • 修复了 ssh_sftp:write 的 Unicode 问题。

    内部 ID:OTP-16377

改进和新功能

  • 对实验性 ssh_dbg 工具的内部 API 进行了更改。

    内部 ID:OTP-16353

  • 新函数 ssh:set_sock_opts/2ssh:get_sock_opts/2 设置和读取底层 TCP 流的选项值。

    内部 ID:OTP-16485

Ssh 4.8.2

修复的错误和故障

  • 修复了如果给定 iolist() 作为输入数据,ssh_connection:send 可能会分配大量内存的问题。

    内部 ID:OTP-16373

  • 安全的原子转换。

    内部 ID:OTP-16375

  • 添加了常量时间比较。

    内部 ID:OTP-16376

Ssh 4.8.1

修复的错误和故障

  • 当在字符串中插入字符以使最后一个字符尝试换行时,ssh cli(例如 shell)服务器的行为很奇怪。

    内部 ID:OTP-14849 辅助 ID:ERL-545

  • 如果 OTP SSH 服务器正在处理“exec”请求,并且执行的代码使用 Erlang standard_io 进行输入/输出,则 I/O 会被服务器的组领导者错误地处理,因此 I/O 会出现在服务器的 Erlang shell 中(如果有)。因此,客户端的用户看不到该 I/O。

    现在已对此进行更正,因此客户端(例如 ssh OS shell 命令)处理 I/O。用户可以通过在终端上写入来向服务器端 exec 处理代码发送输入,并且服务器端输出(例如来自 io:format)会显示在终端上,而不仅仅是函数结果。

    注意 1:执行 exec 请求且以旧的、未记录的方式指定自定义 exec 处理程序的服务器没有更改。更改的仅有服务器的 'exec' 选项的以下两种情况:

    1. 未指定(即使用默认 shell),或
    2. 它具有 {direct, fun(...) -> ... end} 值格式。

    注意 2:以前,客户端在结果和错误报告中附加了行尾标记。它们现在已删除,并且错误报告略有增强。

    技术细节:服务器的设备 standard_input 从 exec 请求的通道接收数据事件,而设备 standard_output 通过数据事件在该通道上将数据发送到客户端。结果是现在 standard_io 由客户端的组领导者执行。

    内部 ID:OTP-15417 辅助 ID:OTP-16108

  • 函数 ssh:shell/1,2,3 在返回时未关闭连接。现在已修复该泄漏。

    内部 ID:OTP-16047

  • 更正了 Erlang SSH 服务器在 exec 请求的某些错误时可能返回状态代码 4294967295 而不是 255 的问题。

    内部 ID:OTP-16123

改进和新功能

  • 内部简化了 ssh_sftp/ssh_xfer

    内部编号:OTP-15972

  • 用户指南中关于一次性执行的文档更新了更多示例。

    内部编号:OTP-16108 辅助编号:OTP-15417

  • SSH 守护进程选项 'exec' 和 'shell' 中引入了新值 'disabled'。之前它们缺少一种明确禁用它们的方法。

    内部编号:OTP-16113

  • 为了与旧的对等方兼容,添加了旧的算法 'aes192_cbc'、'aes256_cbc' 和 'hmac-sha1-96'。

    mac 'hmac-sha1-96' 现在不推荐使用,因此必须显式启用。例如,使用选项值 {modify_algorithms, [{append, [{mac,['hmac-sha1-96']}]}]}

    内部编号:OTP-16170

Ssh 4.8

修复的错误和故障

  • 修复了守护进程选项 subsystems 的错误类型定义。

    内部编号:OTP-15820

  • 修复了在会话设置的早期阶段出现问题时可能发生的 SSH 日志记录崩溃。

    内部编号:OTP-15962 辅助编号:ERL-990

改进和新功能

  • 模块 ssh_connection、ssh_sftp 和 ssh_sftpd 的文档现在从 -spec:s 生成。

    内部编号:OTP-15395

  • 内部清理,包括删除内部文件 ssh_userauth.hrl

    内部编号:OTP-15876 辅助编号:PR-2255, PR-2256

  • 删除了 ssh.hrl 中未使用的定义。

    内部编号:OTP-15929 辅助编号:PR-2297

  • 删除了内部 #connection{} 记录中未使用的字段。

    内部编号:OTP-15984

  • 要从例如 ssh:connect/3 获取 connection_ref() 的信息,之前只有一个函数可用,即 ssh:connection_info/2。此票据添加了 ssh:connection_info/1,它返回所有信息。

    对于例如使用 ssh:daemon/2 启动的守护进程(服务器),可以使用函数 ssh:daemon_info/1 返回所有信息。此票据添加了 ssh:daemon_info/2,它仅返回第二个参数中指定的信息。

    连接和守护进程的信息现在还包括项 'options'。仅返回没有默认值的那些选项。

    对于连接,还添加了项 'algorithms' 和 'channels'。

    内部编号:OTP-16040

Ssh 4.7.7

改进和新功能

  • SSH 使用新的加密 API。

    内部编号:OTP-15673

Ssh 4.7.6.6

修复的错误和故障

  • 当在之前有通道的空连接上的超时时间内打开通道时,未取消 idle_time 定时器。

    自有 ID: OTP-17279

Ssh 4.7.6.5

修复的错误和故障

  • 修复解码器错误。

    自有 ID: OTP-16904

Ssh 4.7.6.4

修复的错误和故障

  • 重新密钥决策和套接字关闭之间存在潜在危险。

    内部 ID:OTP-16462 辅助 ID:ERIERL-464

Ssh 4.7.6.3

修复的错误和故障

  • 修复了如果给定 iolist() 作为输入数据,ssh_connection:send 可能会分配大量内存的问题。

    内部 ID:OTP-16373

  • 安全的原子转换。

    内部 ID:OTP-16375

  • 添加了常量时间比较。

    内部 ID:OTP-16376

Ssh 4.7.6.2

修复的错误和故障

  • 当在字符串中插入字符以使最后一个字符试图换行时,ssh cli(例如 shell)服务器的行为异常。

    内部 ID:OTP-14849 辅助 ID:ERL-545

Ssh 4.7.6.1

修复的错误和故障

  • 修复了在会话设置的早期阶段出现问题时可能发生的 SSH 日志记录崩溃。

    内部编号:OTP-15962 辅助编号:ERL-990

Ssh 4.7.6

改进和新功能

  • 当 SSH 服务器在新的 TCP 连接上收到第一条消息,并且该消息不是预期的消息时,现在会将收到的消息的前 64 个字节转储到报告协议错误的 INFO REPORT 中。

    这有助于调试谁发送了错误消息或检测可能的端口扫描。

    内部编号:OTP-15772

Ssh 4.7.5

修复的错误和故障

  • OTP-21 中缺少回调 ssh_channel:init/1

    内部编号:OTP-15762

  • 如果客户端连接到已打开的套接字上的服务器,则 accept_callback 选项中的回调 fun(PeerName,FingerPrint) 在参数 PeerName 中传递的是本地名称,而不是远程名称。

    内部编号:OTP-15763

Ssh 4.7.4

修复的错误和故障

  • SSH sftp 守护进程现在接受根据错误的 sftp 版本编码的 SSH_FXP_STAT 消息。一些客户端会发送此类消息。

    内部编号:OTP-15498 辅助编号:ERL-822, PR-2077

Ssh 4.7.3

修复的错误和故障

  • 修复了 ssh:daemon 调用失败时发生的端口泄漏。

    内部编号:OTP-15397 辅助编号:ERL-801

Ssh 4.7.2

修复的错误和故障

  • 修复了与较新 OpenSSH 的不兼容问题。以前,7.8 及更高版本可能会导致 Erlang SSH 退出。

    内部编号:OTP-15413

  • ssh 守护进程的 'exec' 选项在文档中的格式错误。

    内部编号:OTP-15416

改进和新功能

  • 添加了公钥方法 ssh-ed25519 和 ssh-ed448。

    需要 OpenSSL 1.1.1 或更高版本作为 OTP 应用程序 crypto 下的加密库。

    内部编号:OTP-15094 辅助编号:OTP-15419

  • SSH 属性测试现在已适应 PropEr 测试工具。

    内部编号:OTP-15312

  • 术语“用户”未在 SSH 应用程序中记录。在用户手册中添加了一个新的术语章节,其中定义了术语“用户”。

    还添加了一个关于模块 ssh_file 的参考手册页。这是用户密钥、主机密钥等的默认回调模块。

    内部编号:OTP-15314

  • 主机和用户密钥检查更加健壮。

    内部编号:OTP-15424

Ssh 4.7.1

改进和新功能

  • 扩展了未记录的 ssh_dbg 调试模块,使其具有循环跟踪缓冲区的 API。这使得在检测到错误之前可以轻松记录最后的底层事件。它旨在解决困难的错误。

    内部编号:OTP-15020

  • 实现了密钥交换方法 '[email protected]''curve25519-sha256''curve448-sha512'。最后两个定义在 https://tools.ietf.org/html/draft-ietf-curdle-ssh-curves

    它们都依赖于将 OpenSSL 1.1.1 或更高版本用作加密库。

    内部编号:OTP-15133 辅助编号:OTP-15240

  • 如果将 OpenSSL 1.1.1 或更高版本用作加密库,则现在支持密码 '[email protected]'。

    内部编号:OTP-15209 辅助编号:OTP-15164

Ssh 4.7

修复的错误和故障

  • 如果守护进程端口侦听器重新启动,则如果时间不巧,可能会因 eaddrinuse 而失败。它现在会重试,并在失败之前以指数退避方式重新启动侦听器几次。

    内部编号:OTP-14955

  • 通道回调模块在调用 terminate 时始终将模块名称作为原因。现在它将获得正确的原因,通常是 'normal'。

    内部编号:OTP-15084

改进和新功能

  • exec 选项定义了新的选项值,以便更容易实现自己的 exec 服务器。

    长期以来,一直存在一个用于实现处理 'exec' 请求的守护进程的名为 exec 的选项,但一直未记录。为了保持兼容性,保留了旧的未记录的值及其行为,但错误消息已更改并作为 "stderror" 文本发送。

    *潜在不兼容性*

    内部编号:OTP-14851

  • 更新了 ssh_connection:shell/2 文档。

    内部编号:OTP-14880

  • 实验性的 ssh_dbg 模块已完全重写。其目的是使已部署系统上的跟踪和调试更加容易。

    内部编号:OTP-14896

  • SSH 监督者结构已稍作更改。如果存在打开的连接,这将使停止 ssh 应用程序的速度明显加快。这在例如重新启动时很重要。

    内部编号:OTP-14988

  • SSH 中的类型规范已完全重新设计,并且以下类型已重命名

    ssh:ssh_connection_ref() 已更改为 ssh:connection_ref()

    ssh:ssh_daemon_ref() 已更改为 ssh:daemon_ref()

    ssh:ssh_channel_id() 已更改为 ssh:channel_id()

    *潜在不兼容性*

    内部编号:OTP-15002 辅助编号:OTP-15030

  • SSH 中的内部计时器处理现在基于 gen_statem 计时器。

    自身 ID:OTP-15019

  • 移除了未文档化且未使用的模块 ssh_client_key.erlssh_server_key.erl

    自身 ID:OTP-15028

  • 参考手册页面已部分更新。

    ssh 页面现在从规范和类型生成,已进行重组并部分改写。

    ssh_channel、ssh_connection、ssh_client_key_api、ssh_server_key_api 和 ssh_sftp 页面已更新链接、正确的类型名称以及一些小的更改。

    自身 ID:OTP-15030 辅助 ID:OTP-15002

  • 行为 ssh_channelssh_daemon_channel 已分别重命名为 ssh_client_channelssh_server_channel

    旧模块保留以实现兼容性,但在更新引用它们的 callback 模块时应最好替换它们。

    自身 ID:OTP-15041

  • 新的通道测试套件。

    自身 ID:OTP-15051

  • rekey_limit 选项现在可以设置最大时间以及之前设置的最大数据量。

    自身 ID:OTP-15069 辅助 ID:ERL-617

  • 将进程退出监控从链接更改为监视器。

    自身 ID:OTP-15082

  • 更好地处理行为不端的通道 callback 模块。

    自身 ID:OTP-15083

  • 生成了一个新的 moduli 文件。此文件用于 SSH 中推荐的 diffie-hellman-group-exchange-sha256 密钥交换算法。

    自身 ID:OTP-15113

Ssh 4.6.9.7

修复的错误和故障

Ssh 4.6.9.6

修复的错误和故障

  • 修复了如果给定 iolist() 作为输入数据,ssh_connection:send 可能会分配大量内存的问题。

    内部 ID:OTP-16373

  • 安全的原子转换。

    内部 ID:OTP-16375

  • 添加了常量时间比较。

    内部 ID:OTP-16376

Ssh 4.6.9.5

修复的错误和故障

  • 当在字符串中插入字符以使最后一个字符试图换行时,ssh cli(例如 shell)服务器的行为异常。

    内部 ID:OTP-14849 辅助 ID:ERL-545

Ssh 4.6.9.4

修复的错误和故障

  • 如果客户端连接到已打开的套接字上的服务器,则 accept_callback 选项中的回调 fun(PeerName,FingerPrint) 在参数 PeerName 中传递的是本地名称,而不是远程名称。

    内部编号:OTP-15763

Ssh 4.6.9.3

修复的错误和故障

  • 修复了 ssh:daemon 调用失败时发生的端口泄漏。

    内部编号:OTP-15397 辅助编号:ERL-801

Ssh 4.6.9.2

修复的错误和故障

  • 修复了与较新 OpenSSH 的不兼容问题。以前,7.8 及更高版本可能会导致 Erlang SSH 退出。

    内部编号:OTP-15413

Ssh 4.6.9.1

修复的错误和故障

  • 如果在长时间文件传输期间非 OTP sftp 服务器被终止,SFTP 客户端会报告错误原因 ""

    现在,如果服务器的原因为空,则信号名称(例如 "KILL")将作为错误原因。

    该文档也缺少关于此类错误的类型信息。

    自身 ID:OTP-15148 辅助 ID:ERIERL-194

  • 修复 sftp 协议版本 4 的 ssh_sftp 解码错误

    自身 ID:OTP-15149 辅助 ID:ERIERL-199

Ssh 4.6.9

修复的错误和故障

  • 为遵循 RFC 4419 草案 00 的客户端(例如 PuTTY)错误计算了主机密钥哈希值

    自身 ID:OTP-15064

  • 在某些状态下,重新协商可能会失败

    自身 ID:OTP-15066

Ssh 4.6.8

修复的错误和故障

  • 如果告诉 ssh_sftp 服务器(运行版本 6)删除实际上是目录的文件,则该服务器可能会失败。

    自身 ID:OTP-15004

  • 修复了在收到 {'EXIT',_,normal} 消息时 ssh 服务器罕见的虚假关闭问题。

    自身 ID:OTP-15018

Ssh 4.6.7

修复的错误和故障

  • 修复 ssh.hrl 中的错误规范:double_algs()

    自身 ID:OTP-14990

Ssh 4.6.6

修复的错误和故障

  • 当通道关闭且在至少一秒的时间间隔后尝试在该通道上进行操作时,消除阻塞风险。

    自身 ID:OTP-14939

改进和新功能

  • 添加了 ssh_compat_SUITE。

    此套件包含许多主要与 OpenSSH 的互操作性测试。这些测试启动具有不同 OpenSSH 和 OpenSSL/LibreSSL 加密库版本的 docker 容器,并执行多个受支持算法的测试。

    客户端和服务器都测试了所有登录方法和所有用户的公钥类型。

    客户端和服务器都通过多个 exec 和 sftp 测试测试了 kex、密码、主机密钥、mac 和压缩的所有算法。

    自身 ID:OTP-14194 辅助 ID:OTP-12487

  • 启用用户定义的 shell 时,默认执行已禁用。

    自身 ID:OTP-14881

Ssh 4.6.5

修复的错误和故障

  • 调整了 supervisor 超时

    自身 ID:OTP-14907

  • 删除缓慢进程退出的错误消息

    自身 ID:OTP-14930

改进和新功能

  • ssh:connection 添加选项 save_accepted_host。如果将此选项设置为 false,则禁止将主机密钥保存到例如 known_hosts 文件中。

    自身 ID:OTP-14935

Ssh 4.6.4

修复的错误和故障

  • 修复了使用 sha1 而不是 sha2 的 rsa-sha-256/512 用户公钥的 OpenSSH 7.2(及更高版本)客户端的问题。

    自身 ID:OTP-14827 辅助 ID:ERL-531

Ssh 4.6.3

修复的错误和故障

  • 缺少 ecdsa 公钥的密码选项。

    自身 ID:OTP-14602

改进和新功能

  • 强化了主机和用户公钥处理,因此有故障的插件无法传递错误类型的密钥。

    在服务器启动时和每次接受时,更好地检查可用的主机密钥类型。

    在客户端连接时,更好地检查可用的用户公钥类型。

    自身 ID:OTP-14676 辅助 ID:ERIERL-52,OTP-14570

  • SSH 现在可以从存储在引擎中的私钥中获取主机密钥。有关引擎的详细信息,请参阅加密应用程序。

    自身 ID:OTP-14757

Ssh 4.6.2

修复的错误和故障

  • 在 hello 字符串末尾删除了尾随空格。这导致了一些其他 ssh 实现(例如 Solaris 11 上的 OpenSSH 7.3p1)的互操作性问题

    自身 ID:OTP-14763 辅助 ID:ERIERL-74

  • 修复了客户端立即关闭的 tcp 连接(SYN、SYNACK、ACK、RST)可能处于僵尸状态的问题。

    自身 ID:OTP-14778 辅助 ID:ERIERL-104

Ssh 4.6.1

修复的错误和故障

  • 修复了损坏的打印输出

    自身 ID:OTP-14645

改进和新功能

  • 如果对等方是已知在某些情况下存在问题的 OpenSSH 6.2,则禁用 aes_gcm 密码。

    自身 ID:OTP-14638

Ssh 4.6

修复的错误和故障

  • 启用 ssh_io 模块在读取 standard_io 时也接受二进制值,而不是卡在接收子句中。

    自身 ID:OTP-14506 辅助 ID:PR1503

  • 之前,响应 ssh_sftp:read_file_info/2 函数的文件所有者访问权限始终为 read_write。通过此修复,文件所有者访问权限的实际值将添加到返回的记录中。该值是根据文件模式值计算的。

    自身 ID:OTP-14550 辅助 ID:PR1533

改进和新功能

  • 实现了一个新的选项 modify_algorithms。它允许指定对默认算法列表的更改。请参阅参考手册和《SSH 用户指南》中的“在 SSH 中配置算法”一章。

    自身 ID:OTP-14568

Ssh 4.5.1

修复的错误和故障

  • 所有未知选项都会发送到传输处理程序,无论其类型如何。

    自身 ID:OTP-14541 辅助 ID:EIRERL-63

Ssh 4.5

改进和新功能

  • 重写了 SSH 选项的内部处理。

    以前,没有检查是否将客户端选项提供给守护进程,反之亦然。现在已纠正此问题。如果您的代码在调用启动守护进程时使用了仅限客户端的选项,则该调用将失败。

    *潜在不兼容性*

    自身 ID:OTP-12872

  • 密钥交换算法的现代化。有关讨论,请参阅 draft-ietf-curdle-ssh-kex-sha2。

    删除了一种过时的弱算法,并添加了更强的替换算法,以保持与其他现代 ssh 客户端和服务器的互操作性。还调整了算法的默认排序。

    已停用:现在不安全的密钥交换 diffie-hellman-group1-sha1 默认情况下未启用,但可以使用选项 preferred-algorithms 启用。

    已添加:新的更强的密钥交换 diffie-hellman-group16-sha512diffie-hellman-group18-sha512diffie-hellman-group14-sha256 已添加并默认启用。

    有问题的 [RFC 6194] 基于 sha1 的算法 diffie-hellman-group-exchange-sha1diffie-hellman-group14-sha1 默认情况下仍然启用,以便与缺少现代密钥交换替代方案的旧客户端和服务器兼容。当 draft-ietf-curdle-ssh-kex-sha2 成为 rfc 时,IETF 将弃用这些基于 sha1 的算法和 diffie-hellman-group1-sha1。它们可能会随后从 Erlang/OTP 的默认列表中移除。

    *潜在不兼容性*

    自身 ID:OTP-14110

  • 通过使用映射改进了 sftp 的内部表示。

    自身 ID:OTP-14117

  • 实现了 draft-ietf-curdle-ssh-ext-info-05 中的扩展协商机制和扩展 server-sig-algs

    实现了相关的 draft-ietf-curdle-rsa-sha2-05,并引入了签名算法 rsa-sha2-256rsa-sha2-512

    自身 ID:OTP-14193

  • 澄清了 ssh_sftp:start_channel 文档中的“timeout”和“connect_timeout”处理。

    自身 ID:OTP-14216

  • 函数 ssh:connectssh:shellssh:start_channel 现在接受 IP 元组作为 Host 目标参数。

    自身 ID:OTP-14243

  • 函数 ssh:daemon_info/1 现在会在属性列表中返回 Host 和 Profile 以及 Port 信息。

    自身 ID:OTP-14259

  • 删除了 18.2 版本中已弃用的选项 public_key_alg。请改用 pref_public_key_algs

    *潜在不兼容性*

    自身 ID:OTP-14263

  • 对 SSH 应用程序的守护进程启动进行了重构。没有描述 Host 参数和 ip 选项之间的矛盾解析。当在 Host 参数或 ip 选项中使用 'any' 值时,也存在奇怪的边缘情况。现在(希望)已解决此问题,但这可能会导致代码同时使用 Hostip 选项时出现不兼容情况。已添加值“loopback”以正确命名这些地址。

    *潜在不兼容性*

    自身 ID:OTP-14264

  • 重构了 supervisor 代码。稍微更改了监听 IP-Port-Profile 三元组的命名,以提高 OTP-14264 解决的奇怪边缘情况的一致性。

    自身 ID:OTP-14267 辅助 ID:OTP-14266

  • 现在可以在守护进程中使用 idle_time 选项。

    自身 ID:OTP-14312

  • 为 IETF-CURDLE 扩展协商 (ext-info) 添加了测试用例。

    自身 ID:OTP-14361

  • 用于 IETF-CURDLE 扩展 server-sig-algs(包括 rsa-sha2-*)的测试用例

    自身 ID:OTP-14362 辅助 ID:OTP-14361

  • 现在客户端也可以使用选项 auth_methods 来选择使用的身份验证选项以及使用的顺序。

    自身 ID:OTP-14399

  • 检查存储在文件中的 ECDSA 公钥 (ecdsa-sha2-nistp*) 是否具有正确的大小。

    自身 ID:OTP-14410

Ssh 4.4.2.4

已修复的错误和故障

  • 修复了在收到 {'EXIT',_,normal} 消息时 ssh 服务器罕见的虚假关闭问题。

    自身 ID:OTP-15018

  • 为遵循 RFC 4419 草案 00 的客户端(例如 PuTTY)错误计算了主机密钥哈希值

    自身 ID:OTP-15064

  • 在某些状态下,重新协商可能会失败

    自身 ID:OTP-15066

Ssh 4.4.2.3

已修复的错误和故障

  • 如果告诉 ssh_sftp 服务器(运行版本 6)删除实际上是目录的文件,则该服务器可能会失败。

    自身 ID:OTP-15004

Ssh 4.4.2.2

改进和新功能

  • 启用用户定义的 shell 时,默认执行已禁用。

    自身 ID:OTP-14881

Ssh 4.4.2.1

已修复的错误和故障

  • 在 hello 字符串末尾删除了尾随空格。这导致了一些其他 ssh 实现(例如 Solaris 11 上的 OpenSSH 7.3p1)的互操作性问题

    自身 ID:OTP-14763 辅助 ID:ERIERL-74

Ssh 4.4.2

已修复的错误和故障

  • 如果监听 IP 不是“any”,ssh:daemon_info/1 会崩溃。

    自身 ID:OTP-14298 辅助 ID:seq13294

Ssh 4.4.1

已修复的错误和故障

  • 修复了打开连接时的错误。如果 tcp 设置失败,在某些情况下不会导致错误返回值。

    自身 ID:OTP-14108

  • 减少解密错误时的信息泄露。

    自身 ID:OTP-14109

  • 密钥交换算法 diffie-hellman-group-exchange-sha* 具有服务器选项 {dh_gex_limits,{Min,Max}}。如果使用了该选项,并且 MinMax 与从客户端获得的相应值不同,则客户端会出现主机密钥签名验证错误。

    此错误现已更正。

    自身 ID:OTP-14166

  • 如果同时提供了 root_dircwd,则 sftpd 服务器现在可以在解析文件路径时正确使用它们。还更正了 cwd 处理。

    感谢 kape1395!

    自身 ID:OTP-14225 辅助 ID:PR-1331, PR-1335

  • Ssh_cli 使用的函数无法正确处理非 utf8 unicode。

    自身 ID:OTP-14230 辅助 ID:ERL-364

改进和新功能

  • 优化了密钥交换算法 diffie-hellman-group-exchange-sha* 的实现,对于最慢的(=最大且最安全的)组大小,优化幅度高达 11 倍。

    自身 ID:OTP-14169 辅助 ID:seq-13261

  • ssh 主机密钥指纹生成现在还接受算法列表,并返回相应的指纹列表。请参阅 public_key:ssh_hostkey_fingerprint/2 以及 ssh:connect 中的选项 silently_accept_hosts

    自身 ID:OTP-14223

Ssh 4.4

已修复的错误和故障

  • 如果 packet_size 设置为大于 64k,则使用 sftp 客户端读取文件可能会丢失数据。现在已对此进行了更正,如果存在数据丢失的风险,则会以静默方式降低 packet_size。

    自身 ID:OTP-13857 辅助 ID:ERL-238, OTP-13858

  • 当用户定义的 SSH shell REPL 进程以正常原因退出时,SSH 通道回调模块应向 SSH 客户端报告成功的退出状态。这为 SSH 客户端提供了一种简单的方法来检查执行的命令是否成功完成。(感谢 isvilen)

    自身 ID:OTP-13905 辅助 ID:PR-1173

改进和新功能

  • 扩展了 ssh:connect 的选项 silently_accept_hosts,使客户端可以检查 SSH 主机密钥指纹字符串。请参阅 SSH 的参考手册。

    自身 ID:OTP-13887 辅助 ID:OTP-13888

Ssh 4.3.6

已修复的错误和故障

  • 解决了与 OpenSSH 客户端的重新协商问题。

    自身 ID:OTP-13972

Ssh 4.3.5

已修复的错误和故障

  • 如果客户端非法发送信息行然后立即关闭 TCP 连接,则会引发 badmatch 异常。

    自身 ID:OTP-13966

Ssh 4.3.4

已修复的错误和故障

  • 间歇性 ssh 错误报告提及 nonblocking_sender

    自身 ID:OTP-13953 辅助 ID:seq13199

Ssh 4.3.3

已修复的错误和故障

  • 处理所有应解释为 {error, closed} 的可能的退出值。未能这样做可能会导致 ssh 应用程序的用户出现意外崩溃。

    自身 ID:OTP-13932 辅助 ID:seq13189

Ssh 4.3.2

已修复的错误和故障

  • 已建立的客户端连接的升级可能会崩溃,因为 ssh 客户端 supervisor 的子进程类型错误。现在已修复此问题。

    自身 ID:OTP-13782 辅助 ID:seq13158

  • 在公钥授权中部分提前检查公钥

    自身 ID:OTP-13847 辅助 ID:defensics-ssh3.1.0-190243,205277,219318

  • 更正了 ECDSA(椭圆曲线公钥)的 SHA 处理

    自身 ID:OTP-13850 辅助 ID:defensics-ssh3.1.0-214168

  • 修复了测试套件以及 Codenomicon/Defensics 发现的问题:- 将最大随机填充减少到 15 个字节 (Codenomicon/Defensics) - 不完整的 pdu 处理 (Codenomicon/Defensics) - 测试套件中的 badmatch - 非阻塞发送修复了 ssh_connection_SUITE:interrupted_send 中的死锁

    自身 ID:OTP-13854

  • 现在,当收到 tcp 关闭时,会通知调用者。

    自身 ID:OTP-13859 辅助 ID:seq13177

改进和新功能

  • 使用 application:ensure_all_started/2 而不是硬编码依赖项

    自身 ID:OTP-13843 辅助 ID:PR-1147

Ssh 4.3.1

已修复的错误和故障

  • SSH 客户端不再重试作为选项提供给 ssh:connect 等的错误密码。

    自身 ID:OTP-13674 辅助 ID:TR-HU92273

  • 消除了在客户端和服务器在同一节点上执行通信时,由于特定时序序列而可能存在的挂起风险。

    自身 ID:OTP-13715

Ssh 4.3

改进和新功能

  • 现在可以将由 gen_tcp 创建和连接的套接字用作 ssh:connect、ssh:shell、ssh_sftp:start_channel 和 ssh:daemon 的输入。

    自身 ID:OTP-12860

  • 一些时间优化,主要在消息编码中。

    自身 ID:OTP-13131

  • 通过设置新的数据包和窗口大小优化了 sftp 客户端时间。

    自身 ID:OTP-13175

  • SSH 中的 ssh_connection_handler 模块已更改,现在使用新的行为 gen_statem

    该模块可以用作 gen_statem 回调模块的示例,但有一个警告:此 ssh 提交只是从 gen_fsm 到 gen_statem 的简单移植,并进行了一些代码清理。由于状态机和状态回调几乎没有更改,因此 ssh 模块并未展示新行为的全部潜力。

    “新”状态机使用复合状态。ssh 服务器和客户端状态机非常相似,但存在差异。使用 gen_fsm 时,用户数据中存在标志,实际上实现了“子状态”。现在,使用 gen_statem,这些标志在状态名称中显式表示,例如,状态 userauth 和二进制 role 标志变为两个状态名称 {userauth, server}{userauth, client}

    自有 ID: OTP-13267

  • 描述了从 ssh_sftp API 函数返回的 {error, Reason} 元组。

    自有 ID: OTP-13347 辅助 ID: ERL-86

  • 在 ssh 中添加了 -spec

    自有 ID: OTP-13479

  • 现在可以使用 Port=0 调用 ssh:daemon/{1,2,3}。这会使守护进程在打开之前选择一个空闲的监听 TCP 端口。要在调用后找到此端口号,请使用新函数 ssh:daemon_info/1。有关详细信息,请参阅参考手册。

    自有 ID: OTP-13527

Ssh 4.2.2.6

修复的 Bug 和故障

  • 修复了在收到 {'EXIT',_,normal} 消息时 ssh 服务器罕见的虚假关闭问题。

    自身 ID:OTP-15018

Ssh 4.2.2.5

改进和新功能

  • 启用用户定义的 shell 时,默认执行已禁用。

    自身 ID:OTP-14881

Ssh 4.2.2.4

修复的 Bug 和故障

  • 在 hello 字符串末尾删除了尾随空格。这导致了一些其他 ssh 实现(例如 Solaris 11 上的 OpenSSH 7.3p1)的互操作性问题

    自身 ID:OTP-14763 辅助 ID:ERIERL-74

Ssh 4.2.2.3

修复的 Bug 和故障

  • 密钥交换算法 diffie-hellman-group-exchange-sha* 具有服务器选项 {dh_gex_limits,{Min,Max}}。如果使用了该选项,并且 MinMax 与从客户端获得的相应值不同,则客户端会出现主机密钥签名验证错误。

    此错误现已更正。

    自身 ID:OTP-14166

改进和新功能

  • 密钥交换算法 diffie-hellman-group-exchange-sha* 得到优化,对于最慢的(即最大和最安全的)算法,优化幅度高达 11 倍。

    自身 ID:OTP-14169 辅助 ID:seq-13261

Ssh 4.2.2.2

修复的 Bug 和故障

  • 已建立的客户端连接的升级可能会崩溃,因为 ssh 客户端 supervisor 的子进程类型错误。现在已修复此问题。

    自身 ID:OTP-13782 辅助 ID:seq13158

Ssh 4.2.2.1

修复的 Bug 和故障

  • SSH 客户端不再重试作为选项提供给 ssh:connect 等的错误密码。

    自身 ID:OTP-13674 辅助 ID:TR-HU92273

Ssh 4.2.2

修复的 Bug 和故障

  • 文档更正:ssh_sftp:position/4

    感谢 Rabbe Fogelholm。

    自有 ID: OTP-13305 辅助 ID: ERL-87

Ssh 4.2.1

修复的 Bug 和故障

  • 当服务器在成功身份验证后继续要求提供零个以上的密码时,“keyboard-interactive”身份验证方法在 Erlang 客户端中失败。

    自有 ID: OTP-13225

Ssh 4.2

修复的 Bug 和故障

  • ssh_file 中更好的错误处理。当通过 ssh_file 打开 NFS 挂载的文件,然后在读取过程中远程删除该文件时,会发生一些罕见的错误。这会导致无限循环。

    该 Bug 现已修复。

    自有 ID: OTP-12699 辅助 ID: OTP-11688

  • 修复了压缩算法 [email protected] 中的一个 Bug。

    自有 ID: OTP-12759

  • 现在可以使用选项 fd 中给定的文件描述符启动多个守护进程。当然,每个守护进程都必须具有唯一的文件描述符。

    自有 ID: OTP-12966 辅助 ID: seq12945

  • 修复了导致选项 dh_gex_limit 被忽略的 Bug。

    自有 ID: OTP-13029

  • 修复了 ssh:connect 选项 pref_public_key_algs 指定用户密钥时出现的问题。

    自有 ID: OTP-13158

改进和新功能

  • ssh 参考手册中的文档更新:应用程序文档文件和 ssh_connection。

    自有 ID: OTP-12003

  • 授权阶段已变为有状态,以防止 ssh 对按错误顺序发送的消息采取操作。

    自有 ID: OTP-12787

  • 添加了针对错误消息长度和错误子字段长度的测试用例。

    自有 ID: OTP-12792 辅助 ID: Codenomicon #5214, 6166

  • 实现了 ssh 的 'ecdsa-sha2-nistp256'、'ecdsa-sha2-nistp384' 和 'ecdsa-sha2-nistp521' 签名算法。请参阅 RFC 5656。

    自有 ID: OTP-12936

  • 实现了加密算法 'aes192-ctr' 和 'aes256-ctr'。请参阅 RFC 4344。

    自有 ID: OTP-12939

  • 实现了密码和 MAC AEAD_AES_128_GCM 和 AEAD_AES_256_GCM,但默认情况下未启用。有关详细信息,请参阅 SSH 应用程序参考手册和 RFC5647。

    密码 [email protected][email protected] 也已实现,并且在默认配置中可用。

    自有 ID: OTP-13018

  • 扩展了 ssh:daemon 选项 dh_gex_groups,以读取用户提供的带有生成器-模数对的 ssh 模数文件。该文件采用 openssh 格式。

    自有 ID: OTP-13052 辅助 ID: OTP-13054

  • 现在有一个文件 (public_key/priv/moduli) 列出了大小-生成器-模数三元组。目的是使服务器可以从预生成的三元组列表中随机选择加密素数。这降低了对 diffie-hellman 协商进行某些攻击的风险。

    请参阅参考手册中对 public_key:dh_gex_group/4 的描述,其中描述了此处理方式。

    ssh 服务器 (ssh:daemon) 使用此功能。

    自有 ID: OTP-13054 辅助 ID: OTP-13052

  • ssh:daemon 选项 pwdfun 现在也接受 fun/4。这使用户能够 1) 以另一种方式检查 userid-password,而不是内置算法,2) 实现每个用户或源 IP 或 IP+端口的速率限制,以及 3) 实现对行为不端的对等方的阻止。

    旧的 fun/2 仍然像以前一样工作。

    自有 ID: OTP-13055 辅助 ID: OTP-13053

  • 现在有一个新选项可以使服务器限制可用于 diffie-hellman 组交换协商的模数的大小范围。请参阅 ssh:daemon/3 中的选项 {dh_gex_limits,{Min,Max}}

    自有 ID: OTP-13066

  • Ecdh 密钥交换现在按照 rfc5656 中的定义验证压缩和未压缩的密钥

    自有 ID: OTP-13067

  • 更改了 .ssh 目录的搜索顺序,因此先尝试 $HOME,然后再尝试 init:get_argument(home)

    自有 ID: OTP-13109

  • 优化了 sftp 接收窗口处理,使其不会过于频繁地更新远程端。这使得“sftp mget”的速度明显加快。

    自有 ID: OTP-13130

  • 扩展了选项 key_cb,使其可以接受一个可选列表,该列表作为选项传递给回调模块。这样就可以根据连接的主机使用不同的密钥。另一种可能性是编写一个回调模块,从数据库中获取密钥等。

    感谢 Vipin Nair。

    自有 ID: OTP-13156

Ssh 4.1.3

已知 Bug 和问题

  • 实现了 SSH_MSG_KEX_DH_GEX_REQUEST_OLD,以使 PuTTY 可以与 erl 服务器一起工作。

    自有 ID: OTP-13140

Ssh 4.1.2

修复的 Bug 和故障

  • 在密钥组交换组列表中添加了 1024 组

    自有 ID: OTP-13046

Ssh 4.1.1

改进和新功能

  • 新选项 max_channels 限制接受的具有活动服务器端子系统的通道数。

    自有 ID: OTP-13036

Ssh 4.1

修复的 Bug 和故障

  • 当密钥交换阶段找不到通用算法时,发送一条可理解的断开连接消息。还添加了一些测试用例。

    自有 ID: OTP-11531

  • ssh_sftp:write_file 中的第三个参数现在再次接受 iolist。调整了 Unicode 处理。

    自有 ID: OTP-12853 辅助 ID: seq12891

改进和新功能

  • ssh 测试套件重组和扩展的第一部分。

    自有 ID: OTP-12230

  • 实现了密钥交换算法 'ecdh-sha2-nistp256'、'ecdh-sha2-nistp384' 和 'ecdh-sha2-nistp521'。请参阅 RFC 5656。

    这大大提高了安全级别。

    自有 ID: OTP-12622 辅助 ID: OTP-12671, OTP-12672

  • 实现了密钥交换算法 'diffie-hellman-group14-sha1'。请参阅 RFC 4253。

    这提高了安全级别。

    自有 ID: OTP-12671 辅助 ID: OTP-12672, OTP-12622

  • 实现了密钥交换算法 'diffie-hellman-group-exchange-sha1' 和 'diffie-hellman-group-exchange-sha256'。请参阅 RFC 4419。

    这提高了安全级别。

    自有 ID: OTP-12672 辅助 ID: OTP-12671, OTP-12622

  • 添加了 RFC 4253 第 6 节中建议的随机长度的额外填充。

    自有 ID: OTP-12831

  • 用于低级协议测试的新测试库。还有一个使用它进行一些初步测试的测试套件。目的是在此基础上构建更多对单个 ssh 消息的测试。请参阅同一目录中的 lib/ssh/test/ssh_trpt_test_lib.erlssh_protocol_SUITE.erl

    自有 ID: OTP-12858

  • 将 diffie-hellman-group-exchange-sha* 的默认值增加到 Min = 1024,N = 6144,Max = 8192。

    添加了 6144 和 8192 位默认 gex 组。

    自有 ID: OTP-12937

  • 实现了 MAC 算法 'hmac-sha2-512'。请参阅 RFC 6668。

    自有 ID: OTP-12938

Ssh 4.0

修复的 Bug 和故障

  • 如果通过 packet_size = 0 的通道发送消息,Ssh 会崩溃。

    还为 ssh:daemon 引入了一个新选项:minimal_remote_max_packet_size。此选项设置守护进程将接受来自客户端的最小最大数据包大小声明。默认值为 0,以保持与 OpenSSH 和 rfc 的兼容性。

    自有 ID: OTP-12645 辅助 ID: seq12816

  • 包括了对 rfc 4253 第 8 节中指定的 diffie-hellman 密钥交换中的 'e' 和 'f' 参数的测试。

    自有 ID: OTP-12649

  • 修复了以下 Bug:一旦传输了 rekey_limit 字节(默认情况下为 1GB),则每分钟都会重新生成连接密钥,而不是在下一个传输的 'rekey_limit' 块之后重新生成。

    感谢 Simon Cornish 的报告和修复!

    自有 ID: OTP-12692

  • 修复了以下 Bug:当 {timeout, Timeout} 选项与 ssh_sftp:start_channel 一起使用时,导致 SFTP 连接始终失败。

    感谢 Simon Cornish

    自有 ID: OTP-12708

  • 修复了各种 ssh 密钥交换问题。

    感谢 Simon Cornish

    自有 ID: OTP-12760 辅助 ID: pull req 715

  • 选项 system_diruser_dir 假定该值是可读目录的路径。现在会提前检查这一点,因此 ssh:daemonssh:connect 将立即失败并显示错误消息。

    自有 ID: OTP-12788

  • 守护进程现在会检查客户端是否尝试使用选项 auth_methods 中未包含的方法进行授权。

    自有 ID: OTP-12790

  • 现在,Disconnectfun 应该在所有断开连接时触发。

    自有 ID:OTP-12811

改进和新功能

  • 在 ssh_auth.erl 和 ssh_message.erl 中更好地使用二进制匹配

    自有 ID:OTP-11697

  • 对于 ssh:daemonssh:connect,新增了一个选项 'preferred_algorithms'。

    此选项定义了在 ssh 协议的算法协商阶段呈现给对端的算法。

    默认列表可以从新函数 ssh:default_algorithms/0 中获取。

    * 与已删除的未文档化选项 'role' 和 'compression' 的不兼容 *

    自有 ID:OTP-12029

  • 内部组到 user_drv 协议已更改为同步,以保证发送到实现 user_drv 协议的进程的输出在回复之前被打印。此协议由 standard_output 设备和充当客户端的 ssh 应用程序使用。

    此更改将以前打印到 standard_io 和最终进入 user_drv 的其他设备的无限制缓冲区更改为 1KB。

    *潜在不兼容性*

    自有 ID:OTP-12240

  • 如果 ssh_connection:subsystem/4 失败,我们不希望崩溃,而是希望优雅地终止。

    自有 ID:OTP-12648 辅助 ID:seq12834

  • ssh:daemonssh:connect 新增选项 id_string,用于限制 banner grabbing 尝试。

    可能的值为:{id_string,string()}{id_string,random}。后者将使 ssh 为每个新连接生成一个随机的无意义 id 字符串。

    自有 ID:OTP-12659

  • 为了使 ssh 守护程序能够在虚拟化环境中运行,其中可能存在多个具有相同 IP 地址和端口的服务器,我们添加了一个新的选项 profile。

    自有 ID:OTP-12675

  • 添加了升级测试套件。

    自有 ID:OTP-12676

  • 用于处理 SSH_MSG_DEBUG 消息打印的新选项。可以在选项中提供一个 fun,每当 SSH_MSG_DEBUG 消息到达时都会调用它。这使用户能够格式化打印输出或直接丢弃它。

    自有 ID:OTP-12738 辅助 ID:seq12860

  • 测试用例的改进和修正

    * 在服务器端和客户端都为 disconnectfun 选项添加测试用例

    * 为速度较慢的机器调整了超时测试用例,这些机器有时会失败

    自有 ID:OTP-12786

  • 现在可以在客户端和服务器端都使用 disconnectfun 选项。

    自有 ID:OTP-12789

  • 为 ssh:connect 和 ssh:daemon 新增了一个选项 unknown_msgfun/2,用于处理未知消息。使用此选项,可以在生成 INFO 日志消息之前进行拦截。

    一种用法是过滤掉错误日志中不需要作为 info 报告的消息。这种消息的一个示例是,如果连接具有 keep_alive 并且对端重新启动,则会接收到的“etimedout”tcp 错误消息。

    自有 ID:OTP-12813 辅助 ID:seq12881

Ssh 3.2.4

已修复的错误和故障

  • 如果套接字意外关闭,则优雅地终止。

    自有 ID:OTP-12782

  • 使 Codenomicon Defensics 测试套件通过

    • 限制 kexinit 消息中的算法数量
    • 检查 kexdh 中的 'e' 和 'f' 参数
    • 在服务器端实现“键盘交互”用户身份验证
    • 向错误的版本交换消息返回纯文本消息

    自有 ID:OTP-12784

Ssh 3.2.3

已修复的错误和故障

  • 用于处理 SSH_MSG_DEBUG 消息打印的新选项。可以在选项中提供一个 fun,每当 SSH_MSG_DEBUG 消息到达时都会调用它。这使用户能够格式化打印输出或直接丢弃它。

    自有 ID:OTP-12738 辅助 ID:seq12860

Ssh 3.2.2

改进和新功能

  • ssh:daemonssh:connect 新增选项 id_string,用于限制 banner grabbing 尝试。

    可能的值为:{id_string,string()}{id_string,random}。后者将使 ssh 为每个新连接生成一个随机的无意义 id 字符串。

    自有 ID:OTP-12659

Ssh 3.2.1

已修复的错误和故障

  • 如果通过 packet_size = 0 的通道发送消息,Ssh 会崩溃。

    还为 ssh:daemon 引入了一个新选项:minimal_remote_max_packet_size。此选项设置守护进程将接受来自客户端的最小最大数据包大小声明。默认值为 0,以保持与 OpenSSH 和 rfc 的兼容性。

    自有 ID: OTP-12645 辅助 ID: seq12816

Ssh 3.2

已修复的错误和故障

  • 如果在 ssh_connection.erl 中使用调用语义的函数时对端关闭通道,则返回 {error, closed}。记录这些函数可以返回 {error, timeout | closed},而不仅仅是 ssh_request_status()

    自有 ID:OTP-12004

  • 当 ssh 握手时间过长时,导致 ssh:connect 返回 {error,int()} 而不是 {error,timeout} 的错误。

    自有 ID:OTP-12369

  • 文档更正。(感谢 Rabbe Fogelholm)

    自有 ID:OTP-12399

改进和新功能

  • 添加了 ssh_connection:exec 的示例。

    自有 ID:OTP-12558

Ssh 3.1

已修复的错误和故障

  • 确保 ssh、ssl、eunit 和 otp_mibs 的清理规则实际删除生成的文件。

    自有 ID:OTP-12200

  • 改进的属性测试(感谢 QuviQ 的 Thomas、John 和 Tobias)

    自有 ID:OTP-12256

  • 更正了可能导致密钥重新协商失败的 renegotiate 的错别字

    自有 ID:OTP-12277 辅助 ID:seq12736

  • 传递给 ssh_sftp:start_channel 的 {timeout, Timeout} 选项未应用于 SSH 协议的早期阶段。此补丁将超时传递给 ssh:connect。如果在此阶段发生超时,则返回 {error, timeout}。(感谢 Simon Cornish)

    自有 ID:OTP-12306

改进和新功能

  • 添加了 API 函数 ptty_alloc/3 和 ptty_alloc/4,用于分配伪终端。

    自有 ID:OTP-11542 辅助 ID:seq12493, OTP-11631

  • 支持在本地计算机上未挂载的文件系统以外的其他介质上创建 tar 文件。

    erl_tar api 使用 erl_tar:init/3 进行了扩展,可以使用用户提供的介质存储例程。一组 ssh 特有的此类例程隐藏在新函数 ssh_sftp:open_tar/3 中,以简化在远程 ssh 服务器上创建 tar 存档的过程。

    erl_tar:add/3,4 添加了一个分块文件读取选项,以节省内存,例如在小型嵌入式系统上。在这种情况下,可以指定从文件中读取的切片大小。

    自有 ID:OTP-12180 辅助 ID:seq12715

  • 当对端发送损坏的消息时,始终发送 SSH_DISCONNECT 协议消息。

    自有 ID:OTP-12185

  • 为可以从 erl_tar 更改发送到远程站点的二进制文件的 fun 添加了钩子,用于远程 tar 文件创建。有关详细信息,请参阅 ssh_sftp:open_tar/3,4。这些钩子也可用于读取在文件提取之前需要转换的远程 tar 文件。

    这些钩子旨在用于 tar 文件的加密和解密。在内存、磁盘和网络资源经济方面投入了精力。

    自有 ID:OTP-12312 辅助 ID:OTP-12180

Ssh 3.0.8

已修复的错误和故障

  • 修复了端口扫描后阻止登录的问题。

    自有 ID:OTP-12247 辅助 ID:seq12726

Ssh 3.0.7

已修复的错误和故障

  • 向 SFTP 添加选项 sftp_vsn

    自有 ID:OTP-12227

改进和新功能

  • 修复选项 user_interaction 以按预期工作。当使用 ssh 键盘交互方法实现密码验证并且已提供密码时,这样我们不需要查询用户,即使将 user_interaction 选项设置为 false,连接也应该成功。

    自有 ID:OTP-11329 辅助 ID:seq12420, seq12335

Ssh 3.0.6

已修复的错误和故障

  • 在期望 ssh 版本交换时,优雅地处理来自客户端的错误数据。

    自有 ID:OTP-12157 辅助 ID:seq12706

  • 当重新启动使用 ssh:stop_listner/ [1,2] 停止的 ssh 守护程序时,给定的新选项应替换旧选项。

    自有 ID:OTP-12168 辅助 ID:seq12711

改进和新功能

  • ssh 现在具有 format_status 函数,以避免在错误日志中打印敏感信息。

    自有 ID:OTP-12030

已知错误和问题

  • 选项 parallel_login 不适用于值 true。所有登录都是串行的。

    自有 ID:OTP-12194

Ssh 3.0.5

已修复的错误和故障

  • 当启动一个 ssh 守护程序并给定选项 {parallel_login, true} 时,身份验证协商的超时时间({negotiation_timeout, integer()})从未被删除。

    如果设置了 parallel_login,则会导致会话始终在超时后终止。

    自有 ID:OTP-12057 辅助 ID:seq12663

改进和新功能

  • 警告:这是实验性的,可能会在没有事先警告的情况下消失或更改。

    为 common_test 套件添加了从 common_test 套件运行 Quickcheck 和 PropEr 测试的实验性支持。请参阅新模块 ct_property_testing 的参考手册。

    lib/{inet,ssh}/test/property_test 下添加了实验性属性测试。它们可以直接运行,也可以从 commont_test 套件 inet/ftp_property_test_SUITE.erlssh/test/ssh_property_test_SUITE.erl 中运行。

    有关详细信息,请参阅 test 目录中的代码和手册页。

    (感谢 Tuncer Ayaz 提供的添加 Triq 的补丁)

    自有 ID:OTP-12119

Ssh 3.0.4

已修复的错误和故障

  • 当启动一个 ssh 守护程序并给定选项 {parallel_login, true} 时,身份验证协商的超时时间({negotiation_timeout, integer()})从未被删除。

    如果设置了 parallel_login,则会导致会话始终在超时后终止。

    自有 ID:OTP-12057 辅助 ID:seq12663

Ssh 3.0.3

已修复的错误和故障

  • 从错误报告中删除了邮件地址,并更正了拼写错误 (Stacktace -> stacktrace)

    自有 ID: OTP-11883 辅助 ID: seq12586

  • 修复了 SSH_MSG_IGNORE 和 SSH_MSG_UNIMPLEMENTED 中的解码/编码问题。

    自有 ID: OTP-11983

改进和新特性

  • 接受一些较旧的 OpenSSH 客户端发送不正确的断开连接消息。

    自有 ID: OTP-11972

  • 正确处理 inet 和 inet6 选项

    自有 ID: OTP-11976

Ssh 3.0.2

修复的 Bug 和故障

  • 修复了 ssh:connect 中的超时错误。

    自有 ID: OTP-11908

改进和新特性

  • ssh:daemon/{2,3} 添加了 max_sessions 选项。此选项(如果设置)限制守护程序接受的并发连接数。

    自有 ID: OTP-11885

Ssh 3.0.1

修复的 Bug 和故障

  • 修复了在某些情况下,如果客户端未请求 tty,ssh_cli 可能会延迟提示的问题。

    自有 ID: OTP-10732

  • 现在可以正确计算变量 NewCol,即使在函数调用前有空格,也可以进行函数调用的制表符补全(感谢 Alexander Demidenko)

    自有 ID: OTP-11566

  • 修复了不正确的 dialyzer 规范和类型,并增强了文档。

    感谢 Ayaz Tuncer。

    自有 ID: OTP-11627

  • 修复了当 ssh:exec 在 Linux SSH 守护进程上执行 Linux 命令时的错误。如果结果从标准错误发送回来,则长度信息未被正确剥离。

    自有 ID: OTP-11667

  • 修复了 SSH 文件“known_hosts”的一个错误,该错误导致该文件包含许多相同的条目。

    自有 ID: OTP-11671

  • 一些从列表中删除最后一个元素的本地实现被替换为 lists:droplast/1。请注意,这至少需要 stdlib-2.0,它是 OTP 17.0 中交付的 stdlib 版本。(感谢 Hans Svensson)

    自有 ID: OTP-11678

  • 修复了 ssh:daemon/2,3 的一个 Bug,以便在应该调用时调用 failfun。

    自有 ID: OTP-11680

  • 修复了当收到 SSH_MSG_KEX_DH_GEX_GROUP 时导致 SSH 崩溃的 Bug。这可能导致垃圾回收期间的 eheap_alloc 发生 VM 崩溃。

    自有 ID: OTP-11696 辅助 ID: 12547, 12532

  • 修复了中断键盘交互式身份验证的错误。感谢 Simon Cornish 报告并建议修复。

    自有 ID: OTP-11698

  • 现在 ssh:start/0ssh:start/1ssh:stop/0ssh_connection_handler:open_channel/5 的 dialyzer 规范是正确的。(感谢 Johannes Weißl)

    自有 ID: OTP-11705

  • 以下应用程序的应用程序升级 (appup) 文件已更正

    asn1、common_test、compiler、crypto、debugger、dialyzer、edoc、eldap、erl_docgen、et、eunit、gs、hipe、inets、observer、odbc、os_mon、otp_mibs、parsetools、percept、public_key、reltool、runtime_tools、ssh、syntax_tools、test_server、tools、typer、webtool、wx、xmerl

    向 test_server 添加了一个用于测试 appup 文件的新测试实用程序。现在 OTP 中的大多数应用程序都使用它。

    (感谢 Tobias Schlager)

    自有 ID: OTP-11744

  • 修复了 ssh_connection:send 的 dialyzer 警告。

    自有 ID: OTP-11821

  • ssh:daemon/2,3: 添加了 negotiation_timeoutparallel_login 选项来调整身份验证行为。

    自有 ID: OTP-11823

改进和新特性

  • Ssh 现在完全支持 Unicode 文件名、文件内容、shell 和 cli。请注意,底层操作系统和仿真器也必须支持 Unicode。您可能需要在 Linux 上使用 "erl +fnu" 启动仿真器。

    自有 ID: OTP-10953

Ssh 3.0

修复的 Bug 和故障

  • ssh cli 现在在关闭和新提示之前更快。

    自有 ID: OTP-11339 辅助 ID: seq12423

  • Ssh 进程结构经过重新设计,以更好地映射到真正并行的情况,这解决了很多有时会发生的奇怪的计时问题,例如,当在短时间内并行建立和断开大量连接时,可能会发生进程泄漏。此外,还删除了向后兼容“原始”但从未支持的功能的子句。

    影响:提高流动效率

    *潜在不兼容性*

    自有 ID: OTP-11363

  • 修复了 erts、kernel 和 ssh 中的各种拼写错误。感谢 Martin Hässler。

    自有 ID: OTP-11414

  • 更正了 ssh_server_key_api 中的 private_key 类型文档。感谢 Tristan Sloughter。

    自有 ID: OTP-11449

  • ssh_no_io.erl 中的函数没有正确地模仿 ssh_io.erl 中的函数,某些函数的 arity 不正确,导致 ssh 以错误的方式失败。

    自有 ID: OTP-11490

改进和新特性

  • 添加禁用 CLI 的选项

    自有 ID: OTP-10976

  • 将 sockname 和 user 添加到 ssh:connection_info/2

    自有 ID: OTP-11296

Ssh 2.1.8

改进和新特性

  • 不要不必要地 chmod ~/.ssh。

    自有 ID: OTP-11189

  • 使 ssh_cli.erl 处理 CTRL+C。感谢 Stefan Zegenhagen。

    自有 ID: OTP-11199

  • 澄清了文档中的超时选项。

    自有 ID: OTP-11249

  • 将 openssh_zlib 压缩类型添加到 ssh_transport。感谢 Louis-Philippe Gauthier。

    自有 ID: OTP-11256

Ssh 2.1.7

修复的 Bug 和故障

  • 即使 ssh:daemon 的参数不是有效的表达式,也会被传递参数。

    自有 ID: OTP-10975

改进和新特性

  • 正确忽略 lib/ssh-5.2.5/doc/html/ 中的所有内容。感谢 Anthony Ramine。

    自有 ID: OTP-10983

  • 整合 Andreas Schultz 的椭圆曲线贡献

    为了能够在 SSL/TLS 中支持椭圆曲线密码套件,已向 public_key 和 crypto 添加了处理椭圆曲线基础结构的功能。

    这也导致重写了 crypto API,以获得一致性并消除不必要的开销。所有使用 crypto 的 OTP 应用程序都已更新为使用新的 API。

    影响:椭圆曲线密码术 (ECC) 提供与其它公钥算法同等安全性的较小密钥大小。较小的密钥大小可以节省功耗、内存、带宽和计算成本,这使得 ECC 对受限环境特别有吸引力。

    自有 ID: OTP-11009

Ssh 2.1.6

修复的 Bug 和故障

  • 修复了计时重新密钥 Bug。

    自有 ID: OTP-10940

Ssh 2.1.5

修复的 Bug 和故障

  • 修复了守护进程重新密钥的 Bug。

    自有 ID: OTP-10911

改进和新特性

  • 增强了错误消息,并为尝试启动不存在的子系统的 SSH 客户端添加了测试。

    自有 ID: OTP-10714

Ssh 2.1.4

改进和新特性

  • 改进了密钥交换失败时的错误消息质量。

    自有 ID: OTP-10553 辅助 ID: seq12152

  • 修复了 ssh:connect/3,4 的文档链接。感谢 Martin Hässler。

    自有 ID: OTP-10862

Ssh 2.1.3

修复的 Bug 和故障

  • 现在可以使用 ssh_connection:send/3 发送空二进制文件,此边缘情况以前会导致 ssh_connection:send 挂起。

    自有 ID: OTP-9478 辅助 ID: kunagi-226 [137]

  • 修复了键盘交互式字符串中的拼写错误。感谢 Daniel Goertzen

    自有 ID: OTP-10456

  • ssh_connectino:send/3 将在发送所有数据后才会返回。以前,它可能会过早返回,导致过早关闭连接。还改进了对关闭的 SSH 通道的错误处理。

    自有 ID: OTP-10467

  • 修复了由于 #state.buf 尚未“未定义”而导致的 ssh_cli.erl 崩溃。

    修复了客户端由于通道请求消息响应发送到错误的 ID 而终止连接的问题。

    受影响的 SSH 客户端:- 所有基于 SSH-2.0-TrileadSSH2Java_213 的客户端(问题 #1)- SSH Term Pro(问题 #2)

    感谢 Stefan Zegenhagen

    自有 ID: OTP-10475

  • 修复了 SSH appup 文件中的各种语法错误

    自有 ID: OTP-10657

改进和新特性

  • 实现了 sftp 的 SSH_FX_FILE_IS_A_DIRECTORY 消息

    自有 ID: OTP-6406 辅助 ID: kunagi-218 [129]

  • 修复了 SSH 重新密钥

    自有 ID: OTP-7785 辅助 ID: kunagi-220 [131]

  • 添加了 SSH 应用程序的用户指南

    自有 ID: OTP-7786 辅助 ID: kunagi-221 [132]

  • 提供了有关 failfun、connectfun 和 disconnectfun 的文档

    自有 ID: OTP-7792 辅助 ID: kunagi-222 [133]

  • SSH 连接计时器实现

    新选项 {idle_time, integer()},设置连接超时,当没有活动通道时,默认为无限大

    自有 ID: OTP-10514 辅助 ID: seq12020

  • 更正了一些超出 PDF 页面宽度的示例。

    自有 ID: OTP-10665

  • 修复了客户端和服务器无法就使用哪个身份验证方法达成一致时的内部错误。

    自有 ID: OTP-10731 辅助 ID: seq12237

Ssh 2.1.2.1

改进和新特性

  • 删除了由 badmatch 失败触发的 ssh_connection_handler 中的错误报告。

    自有 ID: OTP-11188

Ssh 2.1.2

修复的 Bug 和故障

  • SSH 静默模式

    ssh:connect/3,4 的一个新选项 quiet_mode。如果为 true,客户端将不会在授权时打印任何内容。

    自有 ID: OTP-10429 辅助 ID: kunagi-273 [184]

  • 限制要使用的密钥算法

    引入了 ssh:connect/3,4 的一个新选项 public_key_algs,您可以在其中限制要使用的密钥算法以及尝试它们的顺序。

    自有 ID: OTP-10498 辅助 ID: kunagi-289 [200]

  • 客户端密码的机密性

    身份验证后取消设置客户端密码。

    内部ID:OTP-10511 辅助ID:kunagi-292 [203]

  • 修复了 SSH 的用户交互

    现在可以接受主机和输入密码了

    内部ID:OTP-10513 辅助ID:kunagi-293 [204]

Ssh 2.1.1

修复的缺陷和故障

  • Ssh 现在在任何情况下都只发送一个通道关闭消息,之前有时会错误地发送两个。

    内部ID:OTP-10060

  • 选项检查错误地处理了 ip_v6_disable 选项,并且没有正确处理一些当前未文档化的选项。

    内部ID:OTP-10061

  • 发送给对端的通道失败消息中的通道 ID,现在在任何情况下都是远程通道 ID

    内部ID:OTP-10062

  • 改进了对多次关闭的处理,避免了当一个通道被多次关闭时偶尔发生的崩溃。

    内部ID:OTP-10112

  • 修复 lib/src/test/ssh_basic_SUITE.erl 以修复 IPv6 选项的拼写错误

    将错误的选项“ipv6_disable”修复为“ipv6_disabled”,与 ssh 手册中的文档一致。

    内部ID:OTP-10219

  • SSH:使“auth_methods”服务器选项可重用

    SSH 代码的服务器端使用 'auth_methods' 选项来告诉连接的 SSH 客户端服务器支持的身份验证方法。代码仍然在适当的位置从 Opts 中提取和处理 'auth_methods' 选项,但 ssh.erl 中的 Opts 检查代码不允许指定该选项。

    内部ID:OTP-10224

  • 在调整通道窗口时使用正确的通道 ID

    内部ID:OTP-10232

Ssh 2.1

修复的缺陷和故障

  • 考虑 authorized_keys 中的所有密钥,之前错误地只考虑了第一个。

    内部ID:OTP-7235

  • ssh 守护进程现在可以正确处理 ras 主机密钥,在之前的版本中,只有 dsa 主机密钥足以建立连接。

    内部ID:OTP-7677

  • 如果连接协商失败,ssh:shell/3 和 ssh:connect/3 不再挂起

    内部ID:OTP-8111

  • 改进检查,以便在我们不确定有足够的数据时不会尝试读取 ssh 数据包长度指示符。

    内部ID:OTP-8380

  • 当禁用用户交互时,不要尝试使用用户交互。

    内部ID:OTP-9466 辅助ID:seq11886

  • 改进了 ssh 连接处理过程中内部错误的错误处理

    内部ID:OTP-9905

  • sftp 守护进程生成正确的文件句柄

    内部ID:OTP-9948

改进和新功能

  • 文档记录支持的算法

    内部ID:OTP-8109

  • 优雅地处理来自 sftp 客户端的过早关闭。

    内部ID:OTP-9391 辅助ID:seq11838

  • 更改了 ssh 实现,以使用 public_key 应用程序进行所有公钥处理。这也是启用回调 API 的第一步,用于提供公钥和处理受密码短语保护的密钥。

    此外,测试套件也得到了改进,使其不会将用户的密钥复制到测试服务器目录,因为这是一种安全风险。在此过程中发现的 ipv6 和文件访问问题也已修复。

    此更改还解决了 OTP-7677 和 OTP-7235

    此更改还涉及对 public_keys ssh 函数的一些更新。

    内部ID:OTP-9911

  • 为 ssh 客户端添加了选项,以支持受密码保护的用户密钥文件。

    内部ID:OTP-10036 辅助ID:OTP-6400, Seq10595

Ssh 2.0.9

改进和新功能

  • Erlang/OTP 现在可以使用并行 make 构建,如果限制作业数量,例如使用 'make -j6' 或 'make -j10'。由于缺少一些依赖项,目前 'make -j' 不起作用。

    内部ID:OTP-9451

  • Ssh 行为现在使用新的指令 "-callback"。参数将在稍后版本的 ssh 中进一步指定。

    内部ID:OTP-9796

Ssh 2.0.8

修复的缺陷和故障

  • 调用 ssh_sftp:stop_channel/1 会导致调用进程的 trap_exit 标志设置为 true。

    内部ID:OTP-9386 辅助ID:seq11865

Ssh 2.0.7

修复的缺陷和故障

  • 一条意外消息会导致 ssh_connection_handler 崩溃并关闭连接。现在会生成错误消息代替。

    内部ID:OTP-9273

Ssh 2.0.6

修复的缺陷和故障

  • 已修复内存泄漏。即,每个终止的连接,pid 的大小和用户名字符串的长度都没有被清除。

    内部ID:OTP-9232

Ssh 2.0.5

改进和新功能

  • 加强了随机数生成。(感谢 Geoff Cant)

    内部ID:OTP-9225

Ssh 2.0.4

修复的缺陷和故障

  • 在某些情况下,当通道意外终止时,SSH 返回 {error, normal}。现在已更改为 {error, channel_closed}。

    *潜在不兼容性*

    内部ID:OTP-8987 辅助ID:seq11748

  • 尝试打开 IPv6 连接时,SSH 没有处理错误原因 enetunreach。

    内部ID:OTP-9031

改进和新功能

  • 现在可以使用 SSH 来签名和验证二进制数据。

    内部ID:OTP-8986

  • SSH 现在确保 .ssh 目录存在,然后再尝试访问该目录中的文件。

    内部ID:OTP-9010

Ssh 2.0.3

修复的缺陷和故障

  • 关于 OTP-8849 的修复程序并未如所述包含在之前的版本中。

    内部ID:OTP-8918

Ssh 2.0.2

修复的缺陷和故障

  • ssh_system_sup 没有捕获 noproc 和 shutdown 消息。

    内部ID:OTP-8863

  • 在某些情况下,当连接关闭时会生成崩溃报告。这是由两个进程之间的竞争条件引起的。

    内部ID:OTP-8881 辅助ID:seq11656, seq11648

改进和新功能

  • SSH 不再使用已弃用的 public_key 函数。

    内部ID:OTP-8849

Ssh 2.0.1

修复的缺陷和故障

  • SSH 在某些情况下以正常原因终止通道,而应该关闭。

    内部ID:OTP-8714

  • SSH 在某些情况下,当通道以正常方式关闭时会生成崩溃报告。

    内部ID:OTP-8735 辅助ID:seq11615

  • 当连接关闭时,进程 ssh_subsystem_sup 和一个 ssh_channel_sup 没有被终止。

    内部ID:OTP-8807

Ssh 2.0

修复的缺陷和故障

  • 函数 ssh:connect/4 没有被导出。

    内部ID:OTP-8550 辅助ID

  • 将错误消息与使用的版本对齐(SSH_FX_FAILURE 与 SSH_FX_NOT_A_DIRECTORY,后者在版本 6 中引入)。

    *潜在不兼容性*

    内部ID:OTP-8644 辅助ID:seq11574

  • 解决了在第一个连接中打开通道之前启动另一个连接时的竞争条件。

    内部ID:OTP-8645 辅助ID:seq11577

改进和新功能

  • 配置参数 ip_v6_disabled 现在可用,这使用户可以更改 SSH 应使用的 IP 版本。

    *潜在不兼容性*

    内部ID:OTP-8535 辅助ID

  • ssh_connection:send 操作现在接受 infinity 作为超时。

    内部ID:OTP-8534 辅助ID

  • 当通道消息未正确处理时,连接处理程序现在包含堆栈跟踪。

    内部ID:OTP-8524 辅助ID

  • 删除了已弃用的模块(ssh_ssh,ssh_sshd 和 ssh_cm)和函数(ssh_sftp:connect 和 ssh_sftp:stop)。

    *潜在不兼容性*

    内部ID:OTP-8596 辅助ID

Ssh 1.1.8

修复的缺陷和故障

  • 在某些情况下,SSH 停止从传输层收集更多数据。

    内部ID:OTP-8401 辅助ID:seq11479

改进和新功能

  • 已删除旧版本说明。

    自有 ID:OTP-8356 辅助 ID

Ssh 1.1.7

修复的错误和故障

  • 现在,当连接终止时,会清除所有进程。

    自有 ID:OTP-8121 辅助 ID

  • 在某些极少数情况下,连接处理程序可能会进入无限循环。

    自有 ID:OTP-8277 辅助 ID:seq11428

  • 如果 SFTP 服务器没有响应 EOF,则函数 ssh_sftp:list_dir/2/3 将进入无限循环。

    自有 ID:OTP-8278 辅助 ID:seq11450

改进和新功能

  • 现在使用大多数平台上存在的开源工具(xsltproc 和 fop)构建文档。一个可见的变化是删除了框架。

    自有 ID:OTP-8201 辅助 ID

Ssh 1.1.6

修复的错误和故障

  • ssh_sftp:start_channel 没有正确处理 ssh_channel:start 的所有可能返回值。

    自有 ID:OTP-8176 辅助 ID

  • SFTPD 没有正确处理重命名命令(版本 4)。

    自有 ID:OTP-8175 辅助 ID:seq11373

  • 如果连接管理器已经终止,则可能会导致通道在即将停止时生成崩溃报告。

    自有 ID:OTP-8174 辅助 ID:seq11377

  • 如果通道不再存在,请求可能会导致连接管理器中出现 badarg 或 badmatch EXIT 消息。

    自有 ID:OTP-8173 辅助 ID:seq11379

  • ssh_transport:unpack/3 可能会导致 badarg 错误。

    自有 ID:OTP-8162 辅助 ID

改进和新功能

  • 现在支持加密算法 aes128-cbc。要求 crypto-1.6.1 可用。

    自有 ID:OTP-8110 辅助 ID

Ssh 1.1.5

修复的错误和故障

  • ssh_sftp:start_channel/3 没有正确处理超时。

    自有 ID:OTP-8159 辅助 ID:seq11386

  • 如果在调用 ssh:connect/3 后未收到进度消息,则调用可能会永远挂起。还添加了超时选项。

    自有 ID:OTP-8160 辅助 ID:seq11386

  • 自 SSH-1.0.2 以来,ssh.appup 文件中缺少逗号。

    自有 ID:OTP-8161 辅助 ID

Ssh 1.1.4

修复的错误和故障

  • SSH 有时会在断开连接时导致崩溃报告。

    自有 ID:OTP-8071 辅助 ID:seq11319

Ssh 1.1.3

修复的错误和故障

  • 如果连接已经关闭,则操作 ssh_sftp:stop_channel/1 返回异常。

    自有 ID:OTP-7996 辅助 ID:seq11281

  • 如果 supervisor:start_child/2 返回 {error, already_present},则 SSH 不会处理。

    自有 ID:OTP-8034 辅助 ID:seq11307

  • 当以受控方式终止连接时,SSH 不再导致 supervisor 报告。

    自有 ID:OTP-8035 辅助 ID:seq11308

Ssh 1.1.2

修复的错误和故障

  • Ssh 混淆了本地和远程通道 ID,这在某些情况下导致消息被丢弃。

    自有 ID:OTP-7914 辅助 ID:seq11234

  • Ssh 无法处理除 0 和 1 之外的回显值。

    自有 ID:OTP-7917 辅助 ID:seq11238

  • 如果收到无效的通道引用,则会发生崩溃。

    自有 ID:OTP-7918 辅助 ID:seq11238

  • 在从客户端接收到 eof 后,Sftpd 连接未关闭。

    自有 ID:OTP-7921 辅助 ID:seq11222

  • 在某些平台上(即那些不支持符号链接的平台),无法启动 SFTP 子系统。

    自有 ID:OTP-7930 辅助 ID

  • 在某些情况下,消息 {ssh_cm, ssh_connection_ref(), {closed, ssh_channel_id()}} 未传递到注册的回调模块。

    自有 ID:OTP-7957 辅助 ID

改进和新功能

  • 通过使用 sftpd 选项 {max_files, Integer},可以减小 READDIR 命令的消息大小。

    自有 ID:OTP-7919 辅助 ID:seq11230

Ssh 1.1.1

修复的错误和故障

  • Erlang SSH 服务器的自我呈现不正确,使用特殊版本 ssh-1.99,尽管它从未支持过低于 2.0 的版本。由于 ssh-1.1 客户端正确拒绝低于 2.0 的版本,而不是让服务器在稍后崩溃。唉,直到 ssh.1.1 发布后才发现演示字符串的问题。现在服务器将自己呈现为 ssh-2.0。

    自有 ID:OTP-7795

  • 内部函数调用使用了不正确的参数,这在使用旧的侦听 API 时导致了问题。这是在 Ssh-1.1 中引入的。

    自有 ID:OTP-7920 辅助 ID:seq11211

改进和新功能

  • Ssh 超时现在将按预期运行,即默认为无穷大,只有 ssh 应用程序的用户才能知道其应用程序的合理超时值。

    *潜在不兼容性*

    自有 ID:OTP-7807

  • 作为 ssh-1.0.1 中的补丁添加的超时实现已略作更改,现在已记录在案。

    自有 ID:OTP-7808

  • 为了遵守在一个 ssh 连接概念上多路复用通道,ssh_sftp:connect/ [1,2,3] 已弃用,并替换为 ssh_sftp:start_channel/[1,2,3],并且 ssh_sftp:stop/1 已弃用,并替换为 ssh_sftp:stop_channel/1,并且要停止 ssh 连接,应调用 ssh:close/ 1。

    自有 ID:OTP-7809

  • 添加了消息 {ssh_channel_up, ChannelId, ConnectionManager},该消息应由通道回调 handle_msg/2 处理。这使得函数 handle_msg/2 成为 ssh 通道实现的强制函数,而在 ssh-1.1 中不是强制函数。

    *潜在不兼容性*

    自有 ID:OTP-7828

Ssh 1.1

修复的错误和故障

  • 监视树实现中的缺陷导致 ssh 守护程序在一位用户注销时关闭与所有当前登录用户的连接。与监视树相关的另一个问题导致客户端关闭泄漏进程,即并非所有进程都正确关闭。

    自有 ID:OTP-7676

  • 制表符可能会导致 ssh_cli 以令人惊讶的方式打印内容。

    自有 ID:OTP-7683 辅助 ID:seq11102

  • [sftp, sftpd] - 添加补丁以使 sftp 时间戳更正确,从长远来看,最好在文件中提供更好的支持,以便使其始终正确运行,现在它将 99% 的时间正确,而不是几乎从不正确,至少在基于 Unix 的平台上。

    自有 ID:OTP-7685 辅助 ID:seq11082

  • [sftpd] - 添加补丁以进一步改进 sftp 服务器中符号链接的处理。

    自有 ID:OTP-7766 辅助 ID:seq11101

  • Ssh 错误地将通道的本地 ID 发送给对等方,而不是远程 ID。在简单情况下,这些 ID 通常恰好具有相同的值。当客户端在同一个 ssh 连接上连续两次发送 exec 命令时(当然是不同的通道,因为当 exec 命令被评估后通道将关闭),就是它们不相同的一种情况。

    自有 ID:OTP-7767

  • 由于有时会在缓冲数据发送之前错误地丢弃缓冲数据,因此在高负载下可能会丢失数据包数据。

    自有 ID:OTP-7768

  • 改进了 ipv6 处理,因为关于 inet 函数的一些假设是不正确的。

    自有 ID:OTP-7770

改进和新功能

  • 添加了新的 API 函数 ssh:connection_info/2。

    自有 ID:OTP-7456

  • 现在稍后启动 ssh 通道进程,避免进程之间的同步问题。

    自有 ID:OTP-7516

  • 出于安全原因,Ssh 现在会拒绝旧版本的 ssh 协议。(即使它们以前没有被正确拒绝,也可能由于其他原因导致连接失败。)

    自有 ID:OTP-7645 辅助 ID:seq11094

  • 已添加新的 API 模块 ssh_channel。这是一种行为,以方便 ssh 客户端的实现和 ssh 守护程序的插入子系统。请注意,这会稍微更改 API 函数 ssh:daemon/[1,2,3] 的选项,弃用所有不再记录的选项。请注意,新 API 强制使用旧 API 的“逻辑方式”,即将子系统进程作为 ssh 应用程序监视树的一部分,因此滥用旧 API 与新 API 不兼容。

    *潜在不兼容性*

    自有 ID:OTP-7769

已知错误和问题

  • Erlang ssh 应用程序当前不处理受密码保护的公钥。

    自有 ID:OTP-6400 辅助 ID:10595

Ssh 1.0.2

修复的错误和故障

  • [sftpd] - 符号链接目录的列表现在应按预期工作。

    自有 ID:OTP-7141 辅助 ID:seq10856

Ssh 1.0.1

修复的错误和故障

  • [sftp] - 当列出包含 100 多个文件的目录时,仅列出了前 100 个。现在已修复此问题。

    自有 ID:OTP-7318 辅助 ID:seq10953

  • 当重新启动 ssh 系统时,ssh_system_sup:restart_acceptor/2 的预期返回值不正确,现在不再是这种情况。

    自有 ID:OTP-7564 辅助 ID:seq11055

  • 在 ssh_userreg.erl 和 ssh_connection_manager 中修复了一些小错误,并添加了一个 ssh_cli 选项以恢复与旧 ssh_cm - API 的向后兼容性。

    自有 ID:OTP-7565

  • 修复了 ipv6 支持中的错误,并添加了一个选项以禁用 ipv6,作为配置错误的计算机的解决方法。

    自有 ID:OTP-7566

改进和新功能

  • [sftp] - 添加了在 sftp 中设置超时值的选项。

    自有 ID:OTP-7305 辅助 ID:seq10945

Ssh 1.0

修复的错误和故障

  • 删除了一些特殊处理提示的方式,这些方式使 ssh 的行为与 openssh 不同。

    自有 ID:OTP-7485 辅助 ID:seq11025

  • pty 选项编码中的错误已修复。

    自身 ID: OTP-7504

改进和新特性

  • ssh 进程的架构已重建,以适应监督树,从而成为真正的 OTP 应用程序,并在启动和停止时从中受益。

    自身 ID: OTP-7356 辅助 ID: seq10899

  • 添加了对 pty 选项 echo off 的支持。需要 R12B-4 及以上的内核。

    *潜在不兼容性*

    自身 ID: OTP-7502 辅助 ID: seq10959

  • ssh API 已得到增强,许多旧的 API 函数已弃用。

    自身 ID: OTP-7503