リモート開発メインのソフトウェア開発企業のエンジニアブログです

🛡️SSHホストキー変更警告が出たときの安全な対処法(セキュリティ視点)

はじめに

SSH 接続時に突然こんな警告が出て、焦ったことはありませんか?

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
...

多くの人は「サーバーを再構築したからだろう」とか「known_hostsを削除すればいい」と軽く考えがちです。

しかしこの警告は中間者攻撃(Man-in-the-Middle, MITM)を検知するために設計された、極めて重要なセキュリティ機能なのです。

この記事では、この警告が持つ本当の意味と、安全に・正しく対処する方法を掘り下げて解説します。


ホストキー警告はなぜ重要なのか

SSHのセキュリティは「公開鍵暗号」と「ホスト認証」に依存しています。

  • 公開鍵暗号 → 通信の暗号化
  • ホスト認証 → 接続先サーバーが「本物」であることの保証

特にホスト認証は、攻撃者が間に入って偽サーバーを立ててあなたの入力(認証情報・秘密情報)を盗み取ることを防いでいます。

この警告を無視してしまうと、SSHという強固なプロトコルの根幹が崩壊することになります。


警告が出る原因は2種類しかない

  1. セキュリティ侵害の可能性(最悪のケース)
    • 攻撃者が中間に入り込み、あなたを偽サーバーへ誘導している
    • 入力したパスワードや秘密鍵が盗まれるリスク
  2. サーバー運用上の変更(よくあるケース)
    • サーバー再構築でホストキーが変わった
    • クラウド環境(AWS, GCP, Azure 等)でIPが他のインスタンスに割り当てられた
    • 管理者がホストキーを更新した

ほとんどは後者ですが、「必ず後者とは限らない」ことが重要です。


Moba Pro

安全な対処フロー

1. 安易にknown_hostsを削除しない

ssh-keygen -R hostname を打つ前に必ず確認が必要です。
削除してしまうと、本物と偽物の区別がつかなくなるからです。

2. 管理者に必ず確認する

  • 自分が管理しているサーバーなら「OSを再インストールしたか?」「キーを更新したか?」等と確認する
  • チーム環境なら担当者に問い合わせて、正しいホストキーのfingerprintを教えてもらう

3. 安全が確認できたら更新する

正しいことを確認した上で、古いキーを削除・再登録します。

ssh-keygen -R example.com
ssh example.com

接続時に新しいホストキーを保存するよう求められるので yes を入力。


🔍 サーバー管理者が現在のホストキーを確認する方法

サーバー側で以下のコマンドを実行することで、各種ホストキーの fingerprint を確認できます。

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

出力例:

256 SHA256:AbCdEfGhIjKlMnOpQrStUvWxYz1234567890abcd /etc/ssh/ssh_host_ecdsa_key.pub

このfingerprintを、警告メッセージやチーム共有資料の値と照合します。
一致していれば正しいサーバー、一致していなければ設定ミス・別インスタンス・最悪攻撃されている可能性を疑った方がいいかもしれません。


よくある「やってはいけない対応」

  • 警告を無視してそのまま接続する
    → 攻撃者の偽サーバーに接続してしまう可能性
  • known_hostsを丸ごと削除する
    → 過去に確認した全サーバーの保証を捨ててしまう行為。セキュリティレベルは一気にゼロに
  • fingerprintを確認せずに上書きする
    → もし攻撃者が間に入っていたら、そのまま“偽物を本物として登録”することになる

まとめ

SSH ホストキー警告は「うざいメッセージ」ではなく、攻撃の可能性を唯一知らせてくれるアラートです。

✅ 原因は「運用変更」か「攻撃」しかない
✅ 確認せずに削除・上書きは絶対にNG
fingerprintの照合を必ず行う

これを徹底することで、SSHのセキュリティを正しく維持できます。

← 前の投稿

次の投稿 →

Amazon Bedrock Knowledge Base に API 経由でドキュメントを登録する

コメントを残す