常见问题

关于 Termlet

Termlet 是什么?

Termlet 是 SSH 客户端,支持 Windows、macOS(Apple 芯片)与 Linux,也支持 Telnet 与串口,带 SFTP 文件管理、端口转发与本地终端(Windows 上还有 WSL)。界面与核心都用 Rust 编写,整个应用是一个进程。

它附带 termlet 命令行工具:Claude Code 等 AI 工具可以借它在你保存的服务器上执行命令、上传下载文件,密码和私钥始终留在 Termlet 里。

免费吗?要注册账号吗?

目前免费,不需要账号。可以在任意数量的电脑上安装,用于个人或工作用途。

Termlet 按它自己的软件许可协议授权(不是开源许可),以你下载的版本附带的协议为准。其中的第三方组件(GPUI 等开源库、JetBrains Mono 字体、终端配色)按各自的许可协议授权,许可文本在程序附带的 licenses 文件夹中(Windows 在安装目录中,macOS 在 Termlet.app 的 Contents/Resources 中,Linux 在解压出的目录中)。

Termlet 开源吗?以后会开源吗?

现阶段闭源,是否开源以后再定。如果以后开源,代码会放在 GitHub 上的公开仓库 termlet/termlet 中;现在那里放的是安装包、更新日志、许可协议与反馈渠道。

闭源的程序能不能放心用,可以看下面几个问题:数据存在哪里、凭据怎样加密、AI 能拿到什么,以及怎样核对下载的文件确实来自 Termlet 的发布者。

和 Xshell、MobaXterm 等有什么不同?

日常用的功能大多都有:多 Tab 与分屏、SFTP、端口转发、rz / sz、GBK 与 Big5 编码、跳板机与代理、被 JumpServer 等堡垒机调起。从这些客户端换过来:

  • 导入会话:Xshell、MobaXterm、FinalShell、Tabby、Termora、WindTerm 与 ~/.ssh/config(见“怎样从其他客户端导入主机”)。
  • 熟悉的快捷键:Windows、Linux 上可以在设置的“快捷键”中一键换成 Xshell 或 MobaXterm 的键位;macOS 上照 Terminal.app、iTerm2 的习惯用 ⌘(见“macOS 上的快捷键是怎样的”)。
  • 熟悉的操作:Xshell 的撰写栏(写好命令再发给多个终端)与复制会话(共用连接,不用再输密码和验证码),MobaXterm 的 MultiExec(Termlet 中叫同步输入),SFTP 双栏。
  • 带上配色:可以导入 Xshell(.xcs)、MobaXterm、Windows Terminal、iTerm2 等的终端配色。

Termlet 自己的特点:

  • 给 AI 用的命令行工具:默认关闭,逐台主机授权,危险命令先问你,每次调用都有记录(见“AI 与命令行工具”)。
  • 轻:0.1.0 的 Windows 安装包约 17 MB,在作者的电脑(Windows)上实测冷启动约 0.3 秒。
  • 同步不经过 Termlet 的服务器:写到你自己的网盘文件夹或 WebDAV,整个文件用你的同步密码加密。
  • 不需要账号,可以免费用于工作。

现在还没有的:Intel 芯片的 Mac 与 ARM 架构的 Linux 版(见“支持哪些系统”)、RDP / VNC、插件。Termlet 本身也不内置 AI 助手,不调用任何大模型。

能配合 JumpServer 等堡垒机用吗?

能。JumpServer、绿盟 OSMS 等堡垒机在网页上点“连接”时,会按 Xshell、PuTTY、SecureCRT、MobaXterm、WinSCP 或 Xftp 的启动参数调起本地客户端;在堡垒机的本地客户端设置中,把其中一个软件的路径换成 Termlet(Windows 上默认为 %LOCALAPPDATA%\Programs\Termlet\Termlet.exe)即可。这样打开的是临时连接:不保存到主机列表,密码只留在内存中,主机指纹照常确认。

只支持 aes128-cbc、3des-cbc 等旧算法的老堡垒机、交换机,可以在主机的“连接”页勾选“兼容旧设备”。

安装与更新

支持哪些系统?
平台 要求 下载的文件
Windows x64 Windows 10 1809(内部版本 17763)及以上 termlet-<版本>-win-x64.exe(安装向导)
macOS(Apple 芯片) macOS 11 及以上 termlet-<版本>-mac-arm64.zip(其中是 Termlet.app)
Linux x64 glibc 2.35 及以上(Ubuntu 22.04、Debian 12 及更新的发行版),X11 或 Wayland 的桌面会话 termlet-<版本>-linux-x64.tar.gz

三个平台同时发布、版本相同。macOS 只有 Apple 芯片版;Linux 只有 x64 的 tar.gz,没有 deb、rpm、AppImage 与 Flatpak。

macOS、Linux 版由 CI 构建并通过了自动测试,但还没有在真机上测试过,遇到问题请在 GitHub 上 termlet/termlet 的 Issues 中反馈。这两个平台不自动安装更新(见“怎样更新”),也没有 Windows Hello 解锁与 WSL。

macOS 上的快捷键照 Terminal.app、iTerm2 的习惯用 ⌘(列表见下一题)。现在的限制:Option 不能当 Meta 键用(Option 加字母输入组合字符,要发 ESC 前缀可先按 Esc),关闭最后一个窗口时 Termlet 随之退出(不留在程序坞中),从程序坞或关机、注销时退出不会先确认未断开的连接与未完成的传输(⌘Q 与菜单中的“退出 Termlet”会),也不提供 Xshell、MobaXterm 的键位方案。

macOS 上的快捷键是怎样的?

照 Terminal.app、iTerm2 的习惯用 ⌘:

操作 快捷键
复制、粘贴 ⌘C、⌘V
新开本地终端 ⌘T
关闭 Tab ⌘W
切换 Tab ⌘1–9,⇧⌘] / ⇧⌘[
分屏 ⌘D
清屏 ⌘K
搜索 ⌘F
命令面板 ⇧⌘P
打开设置 ⌘,
退出、隐藏、最小化 ⌘Q、⌘H、⌘M
关闭窗口 ⇧⌘W

Control 组合都交给终端(⌃C、⌃R 等给 shell)。Option 加字母输入组合字符,不能当 Meta 键用;要发 ESC 前缀,先按 Esc。SFTP 的文件列表照 Finder 的习惯。快捷键可以在设置的“快捷键”中修改。

安装需要管理员权限吗?

不需要。

  • Windows:安装向导只为当前用户安装,默认装在 %LOCALAPPDATA%\Programs\Termlet,可以改位置(升级时沿用原来的位置),并创建开始菜单与桌面快捷方式。安装目录中是 Termlet.exe 与命令行工具 bin\termlet.exe。卸载时会从 PATH 中移除 termlet 命令,删除快捷方式与更新缓存。
  • macOS:解压后把 Termlet.app 拖进“应用程序”,第一次打开时要放行一次(见“macOS 提示无法打开 Termlet 怎么办”)。删除 Termlet.app 即卸载。
  • Linux:解压后直接运行 ./Termlet;包中的 ./install.sh 只改当前用户的目录(应用菜单、图标与 ~/.local/bin/termlet),不需要 root。卸载时先运行 ./install.sh --uninstall,再删除解压出的目录。

卸载都不会删除你的数据目录(见“我的数据存在哪里”)。

怎样核对下载的文件?

每个版本都附带 SHA256SUMS(这个版本各平台的包与版本描述文件 latest.yml、latest-mac.yml、latest-linux.yml 的 SHA-256)和它的签名 SHA256SUMS.minisig,在下载页与 GitHub Releases 上都能下载。签名为 minisign 格式,在用的公钥是:

RWRSYxplUItTcPz4ZAEBJVcK0n3Sy1xPjhO3CNJIVFxbazT7cXsPacBG
  1. 安装 minisign(Windows:scoop install minisign 或 choco install minisign;macOS:brew install minisign;Linux:发行版的软件包,如 sudo apt install minisign),把 SHA256SUMS、SHA256SUMS.minisig 与下载的包放在同一个文件夹,在其中运行:

    minisign -Vm SHA256SUMS -P RWRSYxplUItTcPz4ZAEBJVcK0n3Sy1xPjhO3CNJIVFxbazT7cXsPacBG
    

    显示 Signature and comment signature verified,并且下一行 Trusted comment: termlet-sha256sums <版本> 中的版本号就是你下载的版本,才算通过。

  2. 用 SHA256SUMS 核对下载的包:Linux、Git Bash 或 WSL 中运行 sha256sum -c SHA256SUMS --ignore-missing,macOS 上运行 shasum -a 256 -c SHA256SUMS --ignore-missing,下载的那个文件一行显示 OK;或者在 PowerShell 中运行 Get-FileHash .\termlet-<版本>-win-x64.exe,与 SHA256SUMS 中这个文件的那一行比较(不分大小写)。

SHA-256 一致只说明文件下载完整;签名通过才说明文件来自 Termlet 的发布者。公钥以 GitHub 上 termlet/termlet 仓库的 SECURITY.md 为准,以后轮换密钥时会在那里与更新日志中公告。在用的与离线备用的两把公钥及其密钥 ID 也列在下载页上。

Windows 提示“Windows 已保护你的电脑”怎么办?

安装包暂时没有代码签名,Windows SmartScreen 认不出发布者,第一次运行时可能这样提示;用 Edge 等浏览器下载时,也可能提示这个文件不常被下载。

先确认文件来自官方的下载地址(termlet.dev 的下载页,或 GitHub 上 termlet/termlet 的 Releases),并按上一个问题核对通过,再点“更多信息”→“仍要运行”。

装好以后的更新由 Termlet 自己下载,安装前会校验签名,不用每次手动核对。

macOS 提示无法打开 Termlet 怎么办?

macOS 包只做了 ad-hoc 签名(没有 Apple 开发者证书,也没有经过公证),第一次打开时 macOS 会拦下,提示无法验证开发者,或者 Apple 无法检查它是否包含恶意软件。

先确认文件来自官方的下载地址(termlet.dev 的下载页,或 GitHub 上 termlet/termlet 的 Releases),并按“怎样核对下载的文件”核对通过,再到“系统设置 → 隐私与安全性”中找到关于 Termlet 的提示,点“仍要打开”;也可以在终端中运行:

xattr -dr com.apple.quarantine /Applications/Termlet.app

之后再打开就不会拦了。下载新版本替换 Termlet.app 后,同样要放行一次。

Linux 版怎么安装?打不开怎么办?

解压后直接运行 ./Termlet。想加进应用菜单,运行包中的 ./install.sh(不需要 root),它还把命令行工具链接为 ~/.local/bin/termlet;移动目录后重新运行一次。

打不开时多半是缺少运行时用到的库:libxcb、libxkbcommon、libxkbcommon-x11 与显卡驱动(Vulkan,没有时尝试 OpenGL ES)。Debian / Ubuntu 上缺少时:

sudo apt install libxcb1 libxkbcommon0 libxkbcommon-x11-0 mesa-vulkan-drivers

还要求 glibc 2.35 以上(Ubuntu 22.04、Debian 12 及更新的发行版)与 X11 或 Wayland 的桌面会话。没有 Secret Service(GNOME 钥匙串、KWallet 等)时,Termlet 改为让你设置主密码,每次启动时输入。

Linux 版还没有在真机上测试过,遇到问题请在 GitHub 上 termlet/termlet 的 Issues 中反馈,附上在终端中运行 ./Termlet 时的输出。

怎样更新?

设置的“关于”中“自动检查更新”默认开启,Termlet 启动后自动检查,也可以随时点“检查更新”。

  • Windows:用安装程序装的 Termlet 会在后台下载新版本,下载好后标题栏会提示,点它(或“关于”中的“重启并安装”)即重启安装;不点就在退出时安装。不是用安装程序装的只提示有新版本,点“前往下载”打开下载页。
  • macOS、Linux:只提示有新版本,点“前往下载”打开下载页,下载后手动替换(macOS 替换 Termlet.app,Linux 替换解压出的目录,用过 install.sh 的再运行一次),数据不受影响。

各平台的版本描述文件都带有发布时用离线私钥做的签名,Termlet 用内置的公钥校验通过才下载或提示新版本,Windows 上安装前再核对一次安装包;签名不对时停止更新,并提示你手动下载。

不想自动检查,关掉“自动检查更新”即可。

数据与安全

我的数据存在哪里?

都在你的电脑上。数据目录在 Windows 上是 %APPDATA%\termlet,macOS 上是 ~/Library/Application Support/termlet,Linux 上是 ~/.config/termlet:主机、设置与加密后的凭据在其中的 data.db,日志、本机快照与会话日志也在这个目录中(会话日志的位置可以改)。加密凭据用的主密钥在系统钥匙串中(Windows 凭据管理器、macOS 钥匙串、Linux 的 Secret Service,如 GNOME 钥匙串、KWallet);不可用时(例如 Linux 上没有 Secret Service)改用你设置的主密码,每次启动时输入。

  • Termlet 会把数据目录限制为只有当前用户能访问。
  • 设置环境变量 TERMLET_DATA_DIR 可以把数据目录换到别处。
  • 卸载 Termlet 不会删除数据目录。
Termlet 会联网发送什么?

你的主机、凭据、命令、终端内容和文件只在你的电脑上(开启云同步时,加密后写到你自己选的位置),不经过我们的服务器。我们收到的只有两样:默认开启、可以关闭的匿名使用统计,以及你开启后才会发送的崩溃报告。

使用统计默认开启,Termlet 不会为此弹出提示,装好以后就照常发送;随时可以在设置的“关于”中关掉“发送匿名使用统计”,也可以点“查看发送的内容…”看将要发送的原文。

什么时候联网、统计里有什么,见隐私说明。

密码和私钥安全吗?
  • 密码、私钥、私钥密码、验证码(TOTP)密钥等凭据用 AES-256-GCM 加密后存进数据库,主密钥在系统钥匙串中(见“我的数据存在哪里”)。导入密钥库的私钥也加密保存在库里,不另存成文件。
  • 日志中不记密码、私钥、验证码与命令内容;诊断信息不含主机地址、凭据与命令内容。
  • 命令历史加密保存在本机,不参与同步,命令行工具与 AI 看不到。
  • 首次连接时请你确认主机指纹;指纹变了会拒绝连接,并说明风险。
  • 可以开启应用锁(锁定密码,Windows 上也可以用 Windows Hello),离开电脑时别人用不了已经打开的 Termlet。

做不到的也说清楚:应用锁不防御在这台电脑上以你的身份运行的程序;在主机上保存了验证码密钥后,两步验证实际只剩一步。

AI 与命令行工具

AI 怎么用 Termlet?
  1. 在设置的“命令行工具”中勾选“启用外部 CLI”(默认关闭)。
  2. 编辑要交给 AI 的主机,勾选“允许 Termlet 命令行访问”。第一次用的主机要先在 Termlet 中连接一次,确认主机指纹。
  3. 安装 Agent Skill:在设置的“命令行工具”中一键安装到 Claude Code、通用目录(Codex、Gemini CLI、Cursor、GitHub Copilot 等读取)或 WorkBuddy;也可以在命令行中运行 termlet skill install(termlet 要在 PATH 中:Windows 上在同一页点“加入 PATH”;macOS、Linux 上按同一页给出的命令链接,Linux 包中的 install.sh 已把它链接为 ~/.local/bin/termlet)。之后 AI 会用 termlet 而不是直接 ssh 操作服务器。
  4. 让 AI 去做事,它会运行这样的命令:
termlet ls                                    # 列出允许命令行访问的主机
termlet exec web-01 "systemctl status nginx"  # 执行命令,退出码透传
termlet upload web-01 ./app.tar.gz /tmp/      # 上传单个文件
termlet download web-01 /var/log/syslog .     # 下载单个文件

Termlet 没有打开时,termlet 会在后台启动它(不打开窗口,10 分钟没有请求后退出);也可以在设置中改为只在 Termlet 打开时可用。需要输入验证码的主机不能经命令行工具使用。

为什么说 AI 用起来安全?

AI 只能经 termlet 请 Termlet 替它连接、执行,拿到的是命令的输出:

  • 凭据留在 Termlet 里:AI 看不到密码、私钥与验证码。
  • 默认关闭,逐台授权:只有勾选了“允许 Termlet 命令行访问”的主机能用。还可以为命令行工具单独设一个用户名与密码或密钥,推荐用服务器上的低权限账号。
  • 危险命令先问你:内置 15 条规则(rm -rf /、mkfs、shutdown 等),加上你自己写的正则;命中时 Termlet 弹窗请你批准,拒绝或 60 秒没有处理就不执行。
  • 每次调用都有记录:每次 exec、upload、download,包括失败、被拦截与被拒绝的,都记进本机的审计日志(命令原文、结果、退出码、耗时、调用方的进程链),可以搜索、导出。

要说明的是:危险命令规则只用来防误操作,可以被绕过,不是安全边界。AI 能在你允许的主机上执行命令,真正的权限边界在服务器上,所以建议给命令行工具一个低权限账号。

迁移与同步

怎样从其他客户端导入主机?

主机列表工具栏的“更多”→“导入主机…”,选择来源:

  • ~/.ssh/config(ProxyJump 导入为跳板机,ProxyCommand 导入为代理命令)
  • Xshell 的会话目录
  • FinalShell 的连接目录
  • MobaXterm(MobaXterm.ini、导出的 .mxtsessions,或安装版保存在注册表中的书签)
  • Tabby(config.yaml)
  • Termora 2.x(数据目录 ~/.termora)
  • WindTerm(程序目录、.wind 数据目录或其中的 user.sessions)

选好后先预览:同一地址、端口与用户名的主机可以合并或跳过,可以搜索、筛选、挑选要导入的;没有导入的内容会逐台说明。一般只导入主机信息,不导入密码;Termora 与 WindTerm 会一并导入保存的密码与私钥。

另一台电脑上的 Termlet 导出的主机文件(.termlet-hosts)也从这里导入。

换了电脑怎么迁移?

两种办法:

  • 完整备份:在设置的“备份”中点“创建备份…”,设一个备份密码(至少 8 个字符),得到一个 .termlet-backup 文件;在新电脑上点“从备份恢复…”。备份中有主机、分组、凭据、密钥、快捷命令、端口转发、工作区、终端配色、设置、主机指纹与命令历史,整个文件用备份密码加密。忘了备份密码就解不开。
  • 同步:两台电脑设成同一个同步位置与同步密码(见下一个问题),之后一直保持一致。

不要直接拷贝数据目录:主密钥在原来那台电脑的系统钥匙串中,拷过去的密码与私钥解不开。每天自动保存的本机快照也只能在原来那台电脑上恢复。

怎样在多台电脑之间同步?

在设置的“同步”中选一个同步位置,设置同步密码后点“开始同步”;其他电脑选同一个位置、输入同一个同步密码即可。同步位置可以是:

  • 本机文件夹:放在 OneDrive、坚果云、iCloud 等网盘的同步目录中,由网盘在电脑之间传送;也可以是 U 盘。
  • WebDAV:例如坚果云(地址 https://dav.jianguoyun.com/dav/<目录>/,用应用密码)、Nextcloud、群晖。

同步主机、分组、凭据、密钥、凭据档案、快捷命令、端口转发、工作区、终端配色与大部分设置;命令历史、审计日志、主机指纹与只属于这台电脑的设置(本地终端、应用锁等)不同步。

  • 端到端加密:同步位置中只有一个文件,整个文件用同步密码加密后才写入(Argon2id + AES-256-GCM),存放的地方看不到主机名、地址等任何内容,同步也不经过 Termlet 的服务器。同步密码忘了就解不开。
  • 按条目合并:只有一边改的采用那边;两边改了同一条时采用较新的修改,并在“同步”中列出,可以改用另一边。写入其他电脑的修改之前,先保存一份本机快照,可以回退。
  • 自动同步:默认开启,启动 1 分钟后、本机修改后约 20 秒,以及每 10 分钟同步一次。

注意:一台电脑升级 Termlet 后,其他电脑也要升级才能继续同步;WebDAV 只支持 Basic 认证。

反馈与支持

怎样反馈问题或提建议?
  • 问题报告、功能建议:在 GitHub 上 termlet/termlet 仓库的 Issues 中新建,按模板填写。报告问题时请附上诊断信息:在设置的“关于”中点“复制诊断信息”,其中有版本、运行环境、设置摘要与日志末尾,不含主机地址、凭据、命令内容与审计日志。
  • 使用中的疑问、想法与交流:到同一个仓库的讨论区(Discussions)。
  • 不论在哪里反馈,都不要贴出密码、私钥、令牌与验证码密钥;日志、截图中的主机地址与用户名也可以先遮掉。

Termlet 由一人开发与维护,回复可能会慢一些。

怎样报告安全漏洞?

请不要在 Issues、讨论区等公开的地方报告。在 GitHub 上 termlet/termlet 仓库的 Security 页点“Report a vulnerability”私下报告,只有你和维护者能看到。请写明受影响的版本与系统、问题出在哪里、复现步骤与你认为的影响;不要附带真实的密码、私钥或服务器地址。

通常在 7 天内回复。修复随新版本发布,同时发布安全公告;安全修复只提供给最新发布的版本。危险命令规则可以被绕过、应用锁不防御本机以你的身份运行的程序,这两点是写明的设计边界,绕过它们的写法请提普通的 Issue。完整的流程见仓库中的 SECURITY.md。

没有找到答案?写信到 [email protected]。