Home Lab
PR

【SSH接続エラー】WARNING: REMOTE HOST IDENTIFICATION HAS CHANGEDの原因と解決方法

pesche
記事内に商品プロモーションを含む場合があります

みなさんこんにちわ。
ペスケです。

今回は、サーバーの入れ替えの時に起こったちょっとしたトラブルを紹介します。

この記事で解決できること:

  • サーバー入れ替え・OS再インストール後にSSH接続できなくなった
  • WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! というエラーが出た
  • ssh-keygen -R コマンドの使い方を知りたい

このエラーはなぜ起きる?

サーバーのOSを再インストールしたり、IPアドレスを別のマシンに付け替えたりすると、SSHのホスト鍵(known_hosts)と実際のサーバーの鍵が一致しなくなります。

SSHには、初回接続時にサーバーの公開鍵を ~/.ssh/known_hosts に記録しておき、次回接続時に照合するというセキュリティ機能があります。

仕組みを整理するとこうなります:

  • ホストPCの ~/.ssh/known_hosts に「192.168.1.36 はこの鍵である」という記録がある
  • 今接続した 192.168.1.36 は別の鍵を持っている(OSを入れ直したため)
  • SSHが「なりすましかもしれない」と判断してブロックする

これはセキュリティ上の正常な動作であり、バグではありません。

エラーの全文(こんな表示が出たら該当します)

text@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!   @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Host key verification failed.

このエラーが出たら、known_hostsに保存された古い鍵情報を削除するだけで解決します。

解決方法:コマンド一発で直す

Mac / Linux の場合

ターミナルを開いて、以下のコマンドを実行します。

bashssh-keygen -R サーバーのIPアドレス

実行例:

bashssh-keygen -R 192.168.1.36

成功すると、こんなメッセージが表示されます。

text/home/username/.ssh/known_hosts updated.
Original contents retained as /home/username/.ssh/known_hosts.old

~/.ssh/known_hosts から該当IPの古い鍵情報だけを削除し、バックアップ(.oldファイル)も自動作成してくれます。

Windows の場合

コマンドプロンプト(または PowerShell)を開いて実行します。

textssh-keygen.exe -R 192.168.1.36

Macとの違いは .exe の拡張子が必要な点だけです。

削除後の再接続方法

古い鍵を削除したら、通常通りSSH接続します。

ssh ユーザー名@サーバーのIPアドレス

初回接続と同様に「接続を続けますか?(yes/no)」と聞かれるので、yes と入力すれば完了です。

⚠️ 重要な注意点

このコマンドを実行する前に、本当に自分が管理するサーバーかどうかを必ず確認してください。

ケース対応
自分でOSを入れ替えた・IPを移したサーバー✅ 安全。コマンド実行でOK
自分で構築していないサーバー⚠️ 要確認。本当になりすましの可能性あり
本番環境・業務サーバー⚠️ システム管理者に必ず確認

このエラーは中間者攻撃(Man-in-the-Middle攻撃) の警告としても機能しています。 自分で管理していないサーバーで突然このエラーが出た場合は、安易にコマンドを実行しないようにしましょう。

よくある質問(FAQ)

Q. サーバー側で直そうとしたけどできなかった
A. これはホスト(クライアント)側のエラーです。サーバー側を操作しても解決しません。コマンドはSSH接続元のPC(ターミナルを開いている機器)で実行してください。

Q. ssh-keygen -R と手動でknown_hostsを編集するのはどちらがよい?
A. ssh-keygen -R がおすすめです。該当行だけを正確に削除し、バックアップも自動作成してくれるため、手動編集よりミスが少ないです。

Q. ポート番号が標準(22番)以外の場合は?
A. ポートを指定する場合は以下のように記述します。

bashssh-keygen -R '[サーバーIP]:ポート番号'

まとめ

サーバー入れ替えやOS再インストール後の WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! エラーは、クライアント側のknown_hostsを更新するだけで解決します。

解決手順まとめ:

  1. ターミナル(またはコマンドプロンプト)を開く
  2. ssh-keygen -R [サーバーのIPアドレス] を実行
  3. 再度 ssh ユーザー名@IPアドレス で接続、yes と入力して完了

自宅のお遊びサーバーや学習環境なら気軽に試せますが、本番環境では必ず安全確認を忘れずに!

ABOUT ME
ペスケ
ペスケ
駆け出しブロガー
静岡県出身現在愛知県に住む30歳 グルメと旅行がとても好きで良く遊びに行きます 2026年は、マリオット・ホテルにたくさん宿泊することが目標です
記事URLをコピーしました