tsshd v0.1.9 已经发布,低延迟的 ssh
此版本更新内容包括:
此版本引入了重大改进,包括备受期待的会话分离(detach)和附加(attach)功能,以及对 ProxyCommand 的支持。同时带来了显著的稳定性提升,解决了高负载下的内存驻留(memory retention)、操作阻塞和连接超时问题。
新特性
- 会话管理与附加 (#35): 实现了健壮的会话管理功能。现在你可以分离会话而不终止它们,并在重新附加时安全地丢弃先前的终端输出 (#39)。
- ProxyCommand 支持: 新增了对
ProxyCommand 的支持,即支持 TCP 代理模式以实现更灵活的路由配置。
- 网络诊断: 为心跳确认(heartbeat acknowledgements)添加了 RTT 回调,以便在客户端更好地监控连接延迟。
Bug 修复
- Windows 11 ARM64 显示问题: 通过在创建 ConPTY 时提供精确的终端尺寸(移除了之前列宽
-1 的偏移量),修复了 Windows 11 ARM64 上 Neovim (0.12.3) 显示错位的问题。
- 挂起的 Accept 连接 (#36): 修复了闲置的本地连接(例如来自
ssh-add 或 git 提交签名的连接)如果在客户端未被认领会导致无限挂起的问题。现在这些连接会在超时后被正确回收。
- 阻塞操作与内存泄漏 (#37): 解决了在连接断开、流替换(stream replacement)和重复的附加循环期间发生的严重操作阻塞、goroutine 泄漏和内存驻留问题。流写入现在是可中断的。
- 客户端并发: 修复了由命名返回值(named return values)引起的潜在 defer 和 goroutine bug,并确保在客户端初始化之前正确设置活动检查器(active checker)。
传输与恢复机制改进
- 简化传输层恢复: 在重连时,使用 PTO (QUIC) 和 RTO (KCP) 重置取代了代理数据包重放机制。当后端不可用时,现在会直接丢弃数据包,依赖原生传输层机制来恢复丢失的流量。
- 加密委托: 移除了不可附加的 KCP 连接中不必要的代理加密委托。
CI 与文档
- CI/CD 自动化 (#38): 新增了通过 GitHub Workflows 自动部署预发布版(pre-release)的功能,并修复了 GoReleaser SemVer 解析错误。
- 文档更新: 更新了 UDP 重连和超时配置的文档,并添加了展示自动重连和
tsshd 附加会话的新截图。
完整的更新日志: https://gitee.com/trzsz/tsshd/compare/v0.1.8...v0.1.9
详情查看:https://gitee.com/trzsz/tsshd/releases/v0.1.9