文档
Termiyo,从头到尾
短小的篇章,按你会用到的顺序排列。
开始使用
安装 Termiyo
在下载页面取适合你电脑的版本:Mac 用 Universal .dmg,Windows 用安装程序,Linux 用你发行版的软件包。下载页面也写明了每个系统上怎样校验和安装。
创建你的保险库
第一次打开 Termiyo 时,它会要求一个主密码。应用存的一切都只靠这一样东西保护,它不会被发送到任何地方,而且没有任何找回途径——请用几个互不相关的词组成的口令。
添加一个身份
身份就是用户名加上认证方式:密码、私钥或代理。身份与主机分开,所以同一个登录可以在整个机群上使用,不必重复输入。
添加一台主机
给它一个地址,选一个身份。双击即可连接。第一次连接会显示服务器密钥的指纹;接受它就把这个密钥固定下来,之后每次重连都按它核对。
跳板机
连到一台私有主机
打开主机,展开 Advanced,选一台跳板机。Termiyo 先连到堡垒机,再通过它开一条通道到目标——目标完全不需要从你的机器可达。
链路
跳板机自己也可以有跳板机。Termiyo 在拨号前会把整条路径展平,拒绝成环的链路,并在某一跳失败时指出是哪一跳。
端口转发
本地
在你的机器上监听,在服务器那一侧投递。最常见的情形是访问一个在主机上只绑定 localhost 的数据库。
远程
反过来:服务器监听,连接回到你机器上的某个端口。适合把本地构建展示给只能访问服务器的东西。
动态(SOCKS5)
Termiyo 在本地跑一个 SOCKS5 代理,把每个连接经由该会话送出去,目标地址在远端解析。把浏览器指向它,你就是在从服务器上浏览。
同步
登录
Settings,Sync。用那个已经能解锁你保险库的密码——Termiyo 会从它派生出两个独立的密钥,一个留在本地,另一个服务器可以核验,却始终学不到密码本身。
第二台机器
装好 Termiyo,用同一个密码创建保险库,然后登录。你的主机、密钥和代码片段会在第一次同步时到达。除了你自己的机器,任何地方都不会解密。
退出登录
删除的是令牌,不是你的数据。机器上的东西留在机器上,仍然用你的保险库密码加密着。
问一条命令
设置
Settings,AI,以及一个 Anthropic API 密钥。密钥存在你的保险库里,和其他凭据一样被加密。
提问
描述你想做什么。建议会落到你的命令行上供你阅读;Termiyo 从不替你执行。任何会删除、覆盖或停止服务的命令都会被标注出来。
会发送什么
你的问题,以及操作系统——如果登录横幅说明了的话。最近的命令只有在你打开那个选项时才会发送。主机名、用户名、密码和密钥从不发送。
Telnet 和串口
串口控制台
添加主机时选 Serial,Termiyo 会列出它能看到的端口。多数控制台端口用 9600 的 8-N-1;速率选错不会报错,而是输出乱码——所以如果输出看起来不对,先检查这个。
发送 break
break 信号是你打断卡住的引导程序、或让设备进入恢复监视器的方式。从终端里没有别的办法产生它。
Telnet
之所以支持,是因为网络设备往往不会说别的。它没有加密——所有内容,包括密码,都以明文传输。请在管理网络里用它,不要跨越互联网。
从另一个 SSH 客户端导入
从你正在使用的客户端导入在本机上查找
导入菜单是主机列表上方那个云朵按钮,第一项就是「在本机上查找」。Termiyo 会自己去你已有的工具存放服务器的地方——ssh_config、known_hosts、PuTTY、FileZilla、WinSCP、MobaXterm、JetBrains 的 IDE、Remmina、Tabby、SecureCRT、Cyberduck,以及那些其实就是 ssh 命令的 iTerm2 配置——把找到的连同数量一起列出来,而不是让你自己去翻文件。
有什么会带过来
名称、地址、端口、用户名、跳板机和端口转发。保存的密码也会带过来:来自 FileZilla、WinSCP、JuiceSSH 和 Remmina,进到保险库里加密存放。JetBrains 和 Cyberduck 把密码放在系统 keychain 里,MobaXterm 放在 DPAPI 下,SecureCRT 用它自己的口令保护——这些主机照样会进来,只是第一次连接时会问你一次。任何没能对应上的东西都会连原因一起列出来,而不是悄悄丢掉。
Termius、JuiceSSH 和 PuTTY 需要一个文件
Termius 对留在这台机器上的内容逐字段加密,所以那里没有可读的东西,而它自己的导出功能已经被移除了:文件只能来自你自己运行的社区导出工具——Termiyo 能读它的 JSON 和 CSV,密钥也在内。JuiceSSH 是手机应用,把它的备份拷过来。PuTTY 在 Windows 上把会话放在注册表里,先用 regedit 导出;在 macOS 和 Linux 上 ~/.putty/sessions 可以直接读。把文件放进下载文件夹,你回来时 Termiyo 会按名字主动把它递给你。
在你看过之前不会写入任何东西
预览会告诉你将要创建什么、你已经有什么、以及什么没能带过来,这些都在动保险库之前。同一个文件再导入一次,会更新你已有的主机,而不是加上第二份副本。
SSH 证书
粘贴证书
打开设置 → SSH 密钥,选中密钥,把证书颁发机构签发的 -cert.pub 行粘贴到“证书”栏。Termiyo 会显示它允许谁登录、有效期到何时以及强制执行的命令,密钥列表会显示它何时过期。主机证书在保存前就会被拒绝;只要能确定这是哪个密钥,为另一个密钥签发的证书也会被拒绝——Termiyo 保管的密钥总能确定,代理中的密钥在你填写其公钥后即可确定。
代理中的证书
SSH 代理持有的证书会自动提供,无需粘贴。Termiyo 在连接前会先询问代理持有哪些证书。
导入会一并带入
导入 ssh_config 会带入每个密钥的 CertificateFile 以及旁边的 -cert.pub,选择密钥文件导入时也一样。为另一个密钥签发的证书、主机证书或已过期的证书不会被关联,预览会说明原因。只有勾选相应的选项,证书才会加到你已有的密钥上。
Mosh 也可以
Mosh 主机会像 SSH 主机一样用你的证书登录。如果证书强制执行某条命令,主机会执行它而不是 mosh-server,Mosh 就无法启动;Termiyo 会指出这很可能是原因。安全密钥证书不会用于 Mosh 登录,因为它无法等待触摸——这类证书请使用 SSH。
从 AWS 导入
需要什么
一个带 ec2:DescribeInstances 权限的访问密钥,别的都不需要。凭据只用于这一次调用,不会被保存。
会得到什么
你选择的区域里每个运行中的实例,包括没有公网地址的那些——那些正是你要通过堡垒机去连的。勾选你想要的。
再跑一次
重新导入会更新你已有的主机,而不是加上第二份副本,而且不会动你给它们指定的身份。
代码片段
保存一条命令
代码片段就是你留下来的命令,按文件夹归类。运行一个片段,会把它输入到你眼前的终端里。
片段里的值
在需要值的地方写上 ${name},然后在编辑器里为每个值选择填法:“每次都询问”(可设默认答案或允许的答案列表)、“从主机填入”(主机的地址、端口或登录名),或“交给 shell”,用于 shell 本来就有的值,例如 ${PATH}。片段绝不会在缺少值的情况下运行:在每个值都有答案之前,“执行片段”一直不可用。桌面应用下次会提供你上次的答案;机密值从不保存。
指向一台服务器的链接
复制链接
在“服务器”页面打开某台服务器的菜单,选择“复制链接”。服务器自己的页面和主机编辑器里也有同样的操作,在命令面板里输入“复制”也能找到它。链接形如 termiyo://connect/prod-db。它只写了服务器的名字,不带地址、登录名或密码。
点击之后会发生什么
桌面应用会来到前台,并在连接之前先询问,同时显示这个名字在这台电脑上指向的地址。链接只能打开已经用这个名字保存的服务器;否则 Termiyo 会说明情况,什么也不打开。如果保险库是锁着的,链接最多等你五分钟来解锁。
两台服务器同名
桌面应用会把它们连同登录名、地址和保险库一起列出来,问你指的是哪一台;点“取消”则什么也不打开。如果没有任何东西能把它们区分开,它会说明情况,什么也不打开。手机应用不会询问:在手机上,两台服务器共用的名字什么也打不开。
Linux AppImage
AppImage 不会在系统中注册,所以在你设置一次之前,链接不会有任何反应:设置、帮助、命令行、“termiyo:// 链接”、“启用”。.deb 和 .rpm 软件包以及 macOS 不需要设置;在 Windows 上,Termiyo 打开过一次之后链接就能用。
链接点不了的时候
有些应用不会把 termiyo:// 变成可点击的链接。这时改在终端里运行 termiyo ssh prod-db;在 macOS 和 Linux 软件包上,“设置”里的“帮助”可以安装这个命令。