# ホストキーの検証

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

## 初回接続

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

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

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

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

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

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

![不明なホストのシート。サーバーのアドレス、SHA-256 フィンガープリント、キーの種類 ssh-ed25519、そして「信頼して接続」と「キャンセル」のボタンが表示されている。](https://bambouville.com/docs/assets/img/unknown-host.png)

*初回接続時の信頼（TOFU）の確認画面。ここに表示されるフィンガープリントを、サーバー側と見比べます。*


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

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

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

## 既知のホストページ

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

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

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

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

## 書き出しと読み込み

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

![既知のホストページ。すべて・検証済み・古い記録・変更ありのフィルタチップ、キーのアルゴリズム・追加日・状態を示すピン留め済みホストの表、そしてフィンガープリントとコピー・削除ボタンが見えるよう展開された 1 行が表示されている。](https://bambouville.com/docs/assets/img/known-hosts.png)

*ピン留めしたすべてのホストを、状態で絞り込めます。行を展開すると、保存されているフィンガープリントが表示されます。*
