查看源代码 SSH 发行说明
Ssh 5.2.5
已修复的错误和故障
在 OTP-27 迁移到 markdown 后,文档已进行优化。
自有 ID: OTP-19335 辅助 ID: PR-9021
Ssh 5.2.4
已修复的错误和故障
Ssh 5.2.3
已修复的错误和故障
通过此更改,ssh 客户端连接设置过程中消除了竞争条件。
通过此更改,ssh:connect 不受队列中 EXIT 消息的影响。
通过此更改,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 远程执行的命令的传输窗口大小。
改进和新功能
现在,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
改进和新功能
将缺少的
known_hosts
和authorized_keys
文件类型添加到ssh_file:decode/2
和ssh_file:encode/2
。自有 ID: OTP-17397
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 处理中的问题。最重要的是
ssh:shell 函数有时会导致输入被回显两次,
ssh:shell 函数没有将 LANG 和 LC_ALL shell 变量传输到连接的服务器,这有时会导致 Unicode 处理错误,
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/6
和ssh: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/5
和ssh_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/2
和ssh: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' 选项的以下两种情况:
- 未指定(即使用默认 shell),或
- 它具有
{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.erl
和ssh_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_channel
和ssh_daemon_channel
已分别重命名为ssh_client_channel
和ssh_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_sftp:stop_channel/1
中可能出现的挂起问题。自身 ID:OTP-16507 辅助 ID:ERIERL-470
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-sha512
、diffie-hellman-group18-sha512
和diffie-hellman-group14-sha256
已添加并默认启用。有问题的 [RFC 6194] 基于 sha1 的算法
diffie-hellman-group-exchange-sha1
和diffie-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-256
和rsa-sha2-512
。自身 ID:OTP-14193
澄清了 ssh_sftp:start_channel 文档中的“timeout”和“connect_timeout”处理。
自身 ID:OTP-14216
函数
ssh:connect
、ssh:shell
和ssh: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'
值时,也存在奇怪的边缘情况。现在(希望)已解决此问题,但这可能会导致代码同时使用Host
和ip
选项时出现不兼容情况。已添加值“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}}
。如果使用了该选项,并且Min
或Max
与从客户端获得的相应值不同,则客户端会出现主机密钥签名验证错误。此错误现已更正。
自身 ID:OTP-14166
如果同时提供了
root_dir
和cwd
,则 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}}
。如果使用了该选项,并且Min
或Max
与从客户端获得的相应值不同,则客户端会出现主机密钥签名验证错误。此错误现已更正。
自身 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.erl
和ssh_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_dir
和user_dir
假定该值是可读目录的路径。现在会提前检查这一点,因此ssh:daemon
和ssh:connect
将立即失败并显示错误消息。自有 ID: OTP-12788
守护进程现在会检查客户端是否尝试使用选项 auth_methods 中未包含的方法进行授权。
自有 ID: OTP-12790
现在,Disconnectfun 应该在所有断开连接时触发。
自有 ID:OTP-12811
改进和新功能
在 ssh_auth.erl 和 ssh_message.erl 中更好地使用二进制匹配
自有 ID:OTP-11697
对于
ssh:daemon
和ssh: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:daemon
和ssh: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:daemon
和ssh: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.erl
和ssh/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/0
、ssh:start/1
、ssh:stop/0
和ssh_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_timeout
和parallel_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