← 返回所有文章

为什么给 Apple Silicon Mac 做一个原生 SSH 客户端

作为 OpsDev 工程师,我每天一半的时间都花在 SSH 上。这篇聊聊为什么要为 Apple Silicon Mac 单独做一个原生 SSH 客户端:原生界面、钥匙串、系统约定,以及跨平台方案照顾不到的细节。

我的日常工作大概一半时间在 SSH 里度过:看日志、跑发布、查线上问题。另一半时间在写工具,让前一半时间少一点。

Mac 上的 SSH 方案我几乎都长期用过:系统终端加 ssh 命令、通用跨平台终端、浏览器插件,还有几款老牌客户端。它们都能连上服务器,但每天用八小时之后,差距会出现在两个地方:一是界面是否像一个 Mac 应用,二是连接本身是否被当作一等公民。

跨平台方案的共同短板

跨平台终端要照顾所有系统,于是每个系统都只照顾到平均值:

  • 深浅色跟随系统、字体渲染、快捷键约定,总有一两处不顺手
  • 连接配置、标签、分屏各自一套心智模型,和系统的窗口管理合不上拍
  • 密码存在哪里、怎么迁移,往往是最含糊的部分
  • 遇到问题只能等上游修,等一个跨平台框架为 Mac 的边角案例发版,周期很长

这些问题单独看都很小,加起来就是每天多花的十几分钟,和一层永远隔着的玻璃。

原生到底指什么

对 Docklark 来说,原生不是一句宣传语,而是一串具体承诺:

  • 在 Apple Silicon 上原生运行,不经过转译
  • 浅色、深色、跟随系统三种外观随时切换,和系统设置同步
  • 操作符合 macOS 菜单和快捷键约定,紧凑工具栏和系统菜单共用一套动作
  • 连接密码交给 macOS 钥匙串保管,而不是自造一个加密文件
  • 窗口、标签、分屏的行为跟其他 Mac 应用一致

连接是一等公民

原生 SSH 客户端和「带 SSH 功能的终端」最大的区别,在于连接被当成对象来管理:

  • 多级连接目录、收藏、排序和批量操作,机器清单长了也不用靠背
  • 超时、保活、压缩,以及本地、远程和动态端口转发,都是连接上的属性
  • SFTP 和资源监控复用这条已认证的 SSH 连接,不需要再输一次密码
  • 会话可以复制、锁定、按主机排序,断线后可以回到本地 Shell 或等待重连

这些能力靠「终端加一段脚本」拼不出来,因为它们需要客户端理解连接的整个生命周期。

终端体验也要原生

连接之外,终端本身同样有一份清单:全局可设的终端历史上限(1 到 100000 行)、随输出更新的实时搜索、可视与可选的声音响铃、每个连接独立的标签色,以及七套终端配色加自定义 ANSI 色。这些不是花活,是每天盯八小时的界面里最影响手感的那部分。

诚实的边界

截至 2026 年 10 月 18 日,v0.2.61 已提供下载。此前版本在真实设备上验证过直接 SSH、JumpServer 登录和目标服务器访问,但更广泛的验收还没完成,比如真实局域网下的传输速度对比。这些我会持续写在这里。

如果你也想要一个把 Mac 当 Mac 对待的 SSH 客户端,可以看 Docklark 的开发进展。

感谢阅读。

继续探索更多文章 →