👌
known_hostsとは?
known_hosts
は、SSHにおける**「このサーバーは信頼できるよ!」という記録帳(リスト)**です。
🧠 一言で言うと:
~/.ssh/known_hosts
は、今までSSHで接続したことのあるサーバー(ホスト)の公開鍵を保存しておくファイルです。
→ これによって「なりすまし」や「中間者攻撃(MITM)」を防ぎます。
🧩 なぜ必要なの?
🛡️ SSHはサーバーの正体を確認する仕組みがある
- 初回のSSH接続時に、サーバーの公開鍵を受け取る
- その鍵を
known_hosts
に保存しておく - 次回からはその公開鍵と照合して、同じサーバーかチェックする
🔧 動作の流れ(ざっくり)
-
あなたが
ssh user@192.168.1.10
と接続しようとする -
サーバーが自分の公開鍵を送ってくる
-
あなたのPCはこう判断する:
- 「このサーバーは初めてだな。保存していい?(yes/no)」
-
yes
を入力 → 公開鍵が~/.ssh/known_hosts
に保存される
-
次回以降:
- 接続先の鍵と
known_hosts
内の記録を比較 - 一致すればOK。一致しなければ警告!=何かがおかしい
- 接続先の鍵と
⚠️ もしサーバーの鍵が変わっていたら?
-
警告が出る:
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
-
これは「前と違うサーバーかもよ!?なりすましかも!」という警告
📁 場所と構造
- 場所:
~/.ssh/known_hosts
- 1行につき1ホストの鍵情報(暗号化された文字列)
✨ 補足:削除したいとき
もしサーバーの鍵が変わった場合などで削除したいなら:
ssh-keygen -R 192.168.1.10
またはファイルを手動で開いて該当行を削除してもOK。
✅ まとめ
項目 | 内容 |
---|---|
役割 | SSHで接続したサーバーの公開鍵を記録する |
保存場所 | ~/.ssh/known_hosts |
目的 | 「前と同じサーバーか?」を確認して安全性を確保 |
問題時 | サーバーの鍵が変わると警告される |
「秘密鍵で認証するのがユーザー側」
「公開鍵でサーバーの正体を確認するのが known_hosts」
このバランスがSSHのセキュリティの肝です。
もし「秘密鍵と公開鍵の動き」や「MITM攻撃の例」が知りたければ、さらに具体的に図解で説明しますよ。興味ありますか?
Discussion