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 天內沒有見過,
  • 已變更 —— 看到了不同的金鑰;紅色橫幅會標出這個不一致。

展開某一列可以看到它的指紋,並可 拷貝指紋接受新金鑰 (在確認是合理變更之後),或 移除 這個固定項。移除固定項之後, 下一次連線會重新被當成初次連線。

固定項儲存在 App「Application Support」目錄下的 known_hosts.json, 以 address:port 為鍵,指紋為相容 OpenSSH 的 SHA-256。

輸出與輸入

頁首的 輸出 按鈕會把你的固定項寫成標準的 OpenSSH known_hosts 檔案 —— 只有公開主機金鑰和指紋,沒有任何機密 —— 可直接給其他任何 SSH 用戶端使用。 輸入 會讀取 known_hosts 檔案,並在合併任何東西之前列出它找到的每一個 固定項讓你檢視,因此由你決定哪些要進來;若檔案裡沒有可用的內容,它會這麼說 (「未找到可輸入的主機固定項。」)。iPad 和 iPhone 上都可以使用。

已知主機頁面,帶有全部、已驗證、已過時和已變更的篩選按鈕,一張列出已固定主機的表格顯示金鑰演算法、加入日期和狀態,其中一列展開後顯示指紋以及拷貝和移除按鈕。
每一台已固定的主機,都可依狀態篩選。展開一列即可看到它已儲存的指紋。