发布 v0.1.26 (Release v0.1.26)
本次发布为 SSH 多路复用 (Multiplexing) 和 UDP 会话管理增添重要新功能,还有广泛的兼容性改进、新配置选项及大量 Bug 修复。
核心新特性 (Major Features)
- 多路复用与 ControlMaster 支持:新增 `-M` 参数启用多路复用主节点模式;新增 `-O <ctl_cmd>` 参数控制多路复用主进程 (#260);新增 `-S` (ControlPath) 支持,让 `tssh` 能作为 Mosh 等工具的底层 SSH 客户端;迁移至上游 `golang.org/x/crypto` 原生的 `ssh.NewControlClientConn`,提供更安全、原生的 OpenSSH ControlMaster 代理支持。
- UDP 会话分离与恢复 (Attach & Detach):支持分离 (detach) 当前活跃的 UDP 会话,也支持跨设备连接 (attach) 到已存在的 UDP 会话。
- 主机密钥验证与管理:新增对 `VerifyHostKeyDNS` 的支持,用于基于 SSHFP 的主机密钥验证 (#261);新增 `--remove-host-key` 选项,可清理 `known_hosts` 中的过期条目 (#267);新增对 `HashKnownHosts` SSH 配置的支持。
- 主机名规范化 (Host Canonicalization):实现对规范主机名 (canonical host) 查找及 `CanonicalizeHostname` 的支持,修复了 `CanonicalizeMaxDots` 的行为问题 (#248, #251)。
- 协议覆盖:新增 `--tcp` 和 `--quic` 选项,可快速覆盖默认的 `UdpMode` 设置 (#263)。
✨ 功能增强 (Enhancements)
- 连接与稳定性:升级 `tsshd` 依赖,提升重连能力和诊断功能;新增可配置的 `UdpReconnectExitKey`(如 `Ctrl+D`),允许在 UDP 连接丢失时手动快捷退出 (#244);将默认的 `UdpAliveTimeout` (UDP 保活超时) 延长至 10 天,优化时间格式显示;优化 UDP 预览的获取、渲染及终端重绘机制;改进端口转发关闭及会话附加 (attach) 时的错误处理机制。
- 配置与 DNS:在 `tssh.conf` 中新增 `CustomDnsServer` 配置(可通过 `--dns` 参数覆盖);支持加载符合 XDG 目录规范以及传统的 SSH 配置文件;新增模糊查找(fuzzy selection) 主机的配置项及取消时的退出状态码 (#269)。
- 界面与体验 (UI & UX):在终端标题栏中直接显示连接的 RTT 延迟;在 "tiny" 主题下,当主机名为空或与别名相同时自动隐藏主机信息 (#252);新增 `-n` (`NoStdin`) 参数支持。
- 兼容性:支持 `KexAlgorithms` 配置,统一 SSH 算法处理方式 (#240);支持在 UDP 模式下使用 `ProxyCommand`(自动隐含 TCP 代理模式)(#262);增加对更多远程操作系统和架构变体的支持 (#242, #243);对齐 OpenSSH 规范,优化 Agent 密钥匹配和代理配置的逻辑 (#247)。
Bug 修复 (Bug Fixes)
- 网络:在网络地址存在歧义时,正确遵循 `AddressFamily` 优先设置 (#256)。
- 文件路径:修复解析身份认证文件时主目录 (`~/`) 的路径展开问题 (#259)。
- 终端问题:当标准输出被管道重定向时,跳过 Windows 虚拟终端初始化逻辑 (#264);过滤 `ESC[6n` 序列时,忽略终端的光标位置报告。
- 路由与状态:修复非 UDP 目标位于 UDP 跳板机 (jump host) 后方时的退出通知异常;确保远程 Shell 结束时,客户端能正确退出;在连接丢失期间丢弃服务端输出,防止终端出现界面破坏或乱码;将 `args.Destination` 与解析后的最终主机名同步,确保后续的配置处理阶段能正确应用 `Host` / `Match` 规则块 (#251)。
- 常规修复:确保通过临时文件进行二进制文件的原子化安装,防止更新时文件损坏 (#245);修复重复的主机别名被错误解析的问题 (#249);修复 macOS 下默认的 `ssh-sk-helper` 路径解析问题 (#241);将字符串判断中的 `strings.ToLower` 替换为 `strings.EqualFold`,实现更安全的忽略大小写比较。
底层与内部改进 (Build & Docs)
- 在 CI 中添加自动化的预发布 (pre-release) 构建部署流程。
- 优化 README 的排版、表格布局、官方网站 URL 以及安装指南。
- 将 Debian 打包元数据的 section 从 `utils` 调整为 `net`。
- 更新项目包元数据并升级底层依赖项。
新贡献者 (New Contributors)
- @p3ddd 在 [https://github.com/trzsz/trzsz-ssh/pull/241](https://gitee.com/link?target=https%3A%2F%2Fgithub.com%2Ftrzsz%2Ftrzsz-ssh%2Fpull%2F241) 提交了首次贡献。
- [@shoaly](https://gitee.com/shoaly) 在 [https://github.com/trzsz/trzsz-ssh/pull/244](https://gitee.com/link?target=https%3A%2F%2Fgithub.com%2Ftrzsz%2Ftrzsz-ssh%2Fpull%2F244) 提交了首次贡献。
- @mvanhorn 在 [https://github.com/trzsz/trzsz-ssh/pull/260](https://gitee.com/link?target=https%3A%2F%2Fgithub.com%2Ftrzsz%2Ftrzsz-ssh%2Fpull%2F260) 提交了首次贡献。
**完整的更新日志** :
详情查看: