bambouville

ホストキーの検証

Tessera は trust-on-first-use(TOFU、初回接続時の信頼)を採用しています。 サーバーへの最初の接続でそのホストキーをピン留めし、以降の接続はすべてその ピンと照合されます。

初回接続

サーバーに初めて接続すると、Tessera は 不明なホスト のシートを表示して いったん止まり、次の内容を示します。

  • エンドポイント(アドレスとポート)、
  • サーバーのフィンガープリント(SHA-256、OpenSSH 互換)、
  • キーの種類

フィンガープリントは信頼できる情報源と照合してください — 契約先のダッシュボード、 あるいはサーバー自身で次を実行します:

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

そのうえで 信頼して接続 をタップするとピン留めされ、キャンセル で中止 します。ホストのキーが信頼されるまで、Tessera はそのホストにキーを設置せず、 ファイルパネルは先にターミナルセッションを開くよう求めます。

一度信頼すれば接続全体が対象になります。mosh ホストの信頼はブートストラップの SSH に相乗りするため、tmux のサイドチャネルで再び確認を求められることは ありません。Handoff 経由で到達したときや、 近くのデバイスからのセットアップでホストを読み込んだときは、 もう一方のデバイスが信頼しているキーと一致するかどうかもシートに表示されます。 異なる 場合、シートは 接続しない を先頭に出します。参考にはなりますが、 ピン留めはあくまでデバイスごとの明示的な判断です。信頼が同期されることは ありません

不明なホストのシート。サーバーのアドレス、SHA-256 フィンガープリント、キーの種類 ssh-ed25519、そして「信頼して接続」と「キャンセル」のボタンが表示されている。
初回接続時の信頼(TOFU)の確認画面。ここに表示されるフィンガープリントを、サーバー側と見比べます。

ホストキーが変わったとき

サーバーのキーがピン留めしたものと異なる場合、Tessera は ホストキーが変更されました を表示し、おなじみの 「警告: リモートホストの識別情報が変更されました。」という注意書き、以前と新しい フィンガープリント、信頼 / キャンセル のボタンを示します。

変更の理由に心当たりがない限り、中間者攻撃の可能性があるものとして扱って ください。正当な理由としては、サーバーの再インストール、入れ替え、ホストキーの 意図的な更新などがあります。

既知のホストページ

既知のホスト のページ(iPad ではサイドバー、iPhone ではキータブのセレクタの 中)には、ピン留めしたキーがすべて並びます。ホスト、アルゴリズム、追加日、状態が 表示されます。フィルタのチップで一覧を絞り込めます。

  • 検証済み — ピン留め済みで一致しているもの、
  • 古い記録 — 90 日間見かけていないもの、
  • 変更あり — 異なるキーが確認されたもの。赤いバナーが不一致を示します。

行を展開するとフィンガープリントを確認でき、フィンガープリントをコピー、 (正当な変更のあとであれば)新しいキーを受け入れる、ピンの 削除 ができます。 ピンを削除すると、次の接続はふたたび初回接続として扱われます。

ピンはアプリの Application Support ディレクトリ内の known_hosts.json に、 address:port をキーとして、OpenSSH 互換の SHA-256 フィンガープリント付きで 保存されます。

書き出しと読み込み

ページヘッダーの 書き出す ボタンは、ピンを標準の OpenSSH known_hosts ファイルとして書き出します — 公開ホストキーとフィンガープリントだけで、秘密の 情報は含まれません — ほかのどの SSH クライアントでもそのまま使えます。 読み込むknown_hosts ファイルを読み、統合する前に見つかったピンをすべて 確認画面に出すので、何を取り込むかは自分で決められます。使えるものが何もない ファイルの場合はそう表示されます(「読み込めるホストピンが見つかりませんでした。」)。 どちらも iPad と iPhone で使えます。

既知のホストページ。すべて・検証済み・古い記録・変更ありのフィルタチップ、キーのアルゴリズム・追加日・状態を示すピン留め済みホストの表、そしてフィンガープリントとコピー・削除ボタンが見えるよう展開された 1 行が表示されている。
ピン留めしたすべてのホストを、状態で絞り込めます。行を展開すると、保存されているフィンガープリントが表示されます。