主机密钥验证
Tessera 采用首次使用即信任(TOFU):首次连接一台服务器时会固定它的主机密钥, 之后每次连接都会对照这个固定项检查。
首次连接
首次连接到某台服务器时,Tessera 会用未知主机面板拦下,显示:
- 端点(地址和端口),
- 服务器指纹(SHA-256,兼容 OpenSSH),
- 密钥类型。
请对照你信任的来源核对指纹 —— 你的服务商控制台,或在服务器上运行:
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
然后轻点信任并连接将其固定,或轻点取消中止。在一台主机的密钥被信任 之前,Tessera 不会在它上面安装密钥,文件面板也会要求你先打开一个 终端会话。
信任一次即覆盖整条连接:mosh 主机的信任搭载在它的引导 SSH 上,因此 tmux 侧信道不会再次提示。当你通过接力到达,或通过 附近设置导入一台主机时,该面板还会说明这个密钥是否与你 另一台设备信任的一致 —— 而当它不同时,面板会把不要连接放在最前面。 这些是有用的背景信息,但固定仍然是每台设备各自做出的明确决定; 信任绝不同步。
主机密钥发生变更
如果某台服务器的密钥与已固定的不一致,Tessera 会显示主机密钥已变更,附上 经典的「警告:远程主机的标识已改变!」提示、新旧两个指纹,以及信任 / 取消按钮。
除非你知道它为什么变了,否则请把这当作一次可能的中间人攻击 —— 合理的原因包括 重装了服务器、更换了服务器,或有意轮换了它的主机密钥。
已知主机页面
已知主机页面(iPad 上在侧边栏;iPhone 上在密钥标签的选择器后面)列出每一个 已固定的密钥:主机、算法、添加时间和状态。筛选按钮可以缩小列表范围:
- 已验证 —— 已固定且匹配,
- 已过时 —— 90 天未见到,
- 已变更 —— 见到了不同的密钥;红色横幅会标出这处不匹配。
展开某一行即可查看它的指纹,并执行拷贝指纹、接受新密钥(在一次合理的 变更之后)或移除该固定项。移除固定项意味着下一次连接会再次被当作首次连接。
固定项存储在应用 Application Support 目录下的 known_hosts.json 中,以
address:port 为键,使用兼容 OpenSSH 的 SHA-256 指纹。
导出与导入
页面头部的导出按钮会把你的固定项写成一个标准的 OpenSSH known_hosts
文件 —— 只含公开的主机密钥和指纹,不含任何机密 —— 可供任何其他 SSH 客户端
使用。导入会读取一个 known_hosts 文件,并在任何内容被合并之前展示它
找到的每一个固定项供你审阅,由你决定哪些进来;如果文件里没有可用的内容,它
会明说(「未找到可导入的主机固定项。」)。两者在 iPad 和 iPhone 上都可用。