bambouville

主机密钥验证

Tessera 采用首次使用即信任(TOFU):首次连接一台服务器时会固定它的主机密钥, 之后每次连接都会对照这个固定项检查。

首次连接

首次连接到某台服务器时,Tessera 会用未知主机面板拦下,显示:

  • 端点(地址和端口),
  • 服务器指纹(SHA-256,兼容 OpenSSH),
  • 密钥类型

请对照你信任的来源核对指纹 —— 你的服务商控制台,或在服务器上运行:

ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub

然后轻点信任并连接将其固定,或轻点取消中止。在一台主机的密钥被信任 之前,Tessera 不会在它上面安装密钥,文件面板也会要求你先打开一个 终端会话。

信任一次即覆盖整条连接:mosh 主机的信任搭载在它的引导 SSH 上,因此 tmux 侧信道不会再次提示。当你通过接力到达,或通过 附近设置导入一台主机时,该面板还会说明这个密钥是否与你 另一台设备信任的一致 —— 而当它不同时,面板会把不要连接放在最前面。 这些是有用的背景信息,但固定仍然是每台设备各自做出的明确决定; 信任绝不同步

未知主机面板,显示服务器地址、SHA-256 指纹、密钥类型 ssh-ed25519,以及「信任并连接」和「取消」按钮。
首次使用即信任的提示。这里显示的指纹就是你要拿去和服务器比对的那个。

主机密钥发生变更

如果某台服务器的密钥与已固定的不一致,Tessera 会显示主机密钥已变更,附上 经典的「警告:远程主机的标识已改变!」提示、新旧两个指纹,以及信任 / 取消按钮。

除非你知道它为什么变了,否则请把这当作一次可能的中间人攻击 —— 合理的原因包括 重装了服务器、更换了服务器,或有意轮换了它的主机密钥。

已知主机页面

已知主机页面(iPad 上在侧边栏;iPhone 上在密钥标签的选择器后面)列出每一个 已固定的密钥:主机、算法、添加时间和状态。筛选按钮可以缩小列表范围:

  • 已验证 —— 已固定且匹配,
  • 已过时 —— 90 天未见到,
  • 已变更 —— 见到了不同的密钥;红色横幅会标出这处不匹配。

展开某一行即可查看它的指纹,并执行拷贝指纹接受新密钥(在一次合理的 变更之后)或移除该固定项。移除固定项意味着下一次连接会再次被当作首次连接。

固定项存储在应用 Application Support 目录下的 known_hosts.json 中,以 address:port 为键,使用兼容 OpenSSH 的 SHA-256 指纹。

导出与导入

页面头部的导出按钮会把你的固定项写成一个标准的 OpenSSH known_hosts 文件 —— 只含公开的主机密钥和指纹,不含任何机密 —— 可供任何其他 SSH 客户端 使用。导入会读取一个 known_hosts 文件,并在任何内容被合并之前展示它 找到的每一个固定项供你审阅,由你决定哪些进来;如果文件里没有可用的内容,它 会明说(「未找到可导入的主机固定项。」)。两者在 iPad 和 iPhone 上都可用。

已知主机页面,带有全部、已验证、已过时和已变更筛选按钮,一张列出已固定主机的表格显示密钥算法、添加时间和状态,其中一行已展开,露出它的指纹以及拷贝和移除按钮。
每一台已固定的主机,都可以按状态筛选。展开一行即可看到它存储的指纹。