远程
文档编写中
部分内容可能尚不完整。
ThinkTerm 里的远程工作区,目标是用起来和本地一样。会话由多路复用服务端持有,而不是由你面前的窗口持有,因此合上笔记本、换一台机器、或者掉线,都不会终止正在进行的工作。

SSH 主机簿
ThinkTerm 维护自己的主机列表,与你的系统 SSH 配置分开存放。在它旁边,~/.ssh/config 里定义的主机以只读视图呈现 —— ThinkTerm 会读取那个文件,但从不写入。
ThinkTerm 自己的列表里,每台主机可以记录用户名、身份文件、任意 SSH 选项、默认工作区,以及一个保存的密码。操作系统探测默认开启,连上的主机可以报告自己运行的是哪个发行版。
三种连接方式
一台主机可以用以下任意一种方式打开。
普通 SSH —— 直连会话。连接断开时会话随之结束。
Mosh —— 一种漫游的 UDP 会话,能容忍网络切换和睡眠。ThinkTerm 默认用 mosh-server new -s -l LANG=en_US.UTF-8 启动远端;该命令可以按主机单独修改,当远程机器上的 mosh-server 位置不寻常时就需要这么做。
ThinkTerm Connect —— 常驻的多路复用。只有这一种能给你完整的工作区:服务端持有会话树,因此多个客户端可以同时接入并看到同一套结构,某个客户端离开也不影响其余一切继续运行。
保存的密码
主机簿里保存的密码以 AES-256-GCM 加密存储。密钥单独存放在一个文件 secret.key 中,位于工作区数据目录内,与主机簿相邻。
在 macOS 和 Linux 上,该密钥文件以 0600 权限创建,因此这台机器上的其他账户读不到它。
但要清楚它挡不住什么。这个权限挡的是其他用户,挡不住任何以你自己身份运行的东西。文件同步、备份任务,或者你启动的任何程序,读一个 0600 文件毫无障碍 —— 而 secret.key 与加密后的主机簿在同一个目录里,所以凡是复制走这个目录的,两半都拿到了,可以从容解密。把密钥放在磁盘上而不是系统钥匙串里是一个有意的取舍,这就是它的代价。
Windows 上密钥文件没有特殊权限
0600 权限仅在 Unix 上施加。在 Windows 上,secret.key 以普通文件写入,继承所在目录的默认权限。如果这台机器由多个账户共用,或者该目录的权限异常宽松,就应当把保存的密码视为"任何能访问该文件夹的人都可读"。
如果你不想保存密码,改用身份文件即可 —— 它在同一个编辑界面里,也是按主机设置的字段。
断开不等于删除
这是两个不同的动作,ThinkTerm 有意把它们分开。
断开 只是让当前客户端脱离。服务端继续运行,里面的每个会话都保持存活。之后重新连接,工作区会恢复原样。
在服务端删除 会终止这些会话。这是破坏性操作,而当你只是想合上笔记本时,这绝不是你要的。
网络意外中断后,ThinkTerm 会自行重连并恢复会话。在重试期间,它会显示为"正在连接",而不是报为失败。
但自动重试是有上限的。连续失败约两分钟后,ThinkTerm 会停止尝试,等你按下"重新连接"。放弃时不会拆掉任何东西 —— 域仍然处于接入状态,每个窗口和 pane 都还在 —— 但超过这个时长的中断,需要你手动操作一步才能恢复。
为了让远程用起来像本地做了什么
以下行为适用于 ThinkTerm Connect 域上的会话:
- 在等待会被察觉时,打字不等待往返。 预测性本地回显让按键不等服务端就显示出来,但只有当实测往返时延达到阈值(默认 100 毫秒)时才启用。低于这个值,服务端自己的回显已经够快,预测保持关闭。本地会话则完全不预测。
- 分屏不是本地专属的奢侈品。 分屏树、二级标签栏、拖拽分屏、拖动分隔条调整大小,在远程会话中同样可用,行为与本地一致。
- 尺寸不会抖动。 拖动分隔条不会导致回弹、挤压或重同步风暴。
- 滚轮是准确的。 在
vim、less这类鼠标模式程序里,原始的滚动格数被保留,因此滚动既不会太快也不会太慢。 - 客户端状态归你所有。 焦点和选区以本地为准,不会被服务端回显打乱。每个客户端持有自己的配色,在一台设备上换主题不会改变另一台。
