👌

known_hostsとは?

に公開

known_hosts は、SSHにおける**「このサーバーは信頼できるよ!」という記録帳(リスト)**です。


🧠 一言で言うと:

~/.ssh/known_hosts は、今までSSHで接続したことのあるサーバー(ホスト)の公開鍵を保存しておくファイルです。
→ これによって「なりすまし」や「中間者攻撃(MITM)」を防ぎます。


🧩 なぜ必要なの?

🛡️ SSHはサーバーの正体を確認する仕組みがある

  • 初回のSSH接続時に、サーバーの公開鍵を受け取る
  • その鍵を known_hosts に保存しておく
  • 次回からはその公開鍵と照合して、同じサーバーかチェックする

🔧 動作の流れ(ざっくり)

  1. あなたが ssh user@192.168.1.10 と接続しようとする

  2. サーバーが自分の公開鍵を送ってくる

  3. あなたのPCはこう判断する:

    • 「このサーバーは初めてだな。保存していい?(yes/no)
    • yes を入力 → 公開鍵が ~/.ssh/known_hosts に保存される
  4. 次回以降:

    • 接続先の鍵と 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