「警告: リモート ホストの ID が変更されました!」を修正する方法

公開: 2024-10-16
目次
  • 警告を理解する
  • サーバーの ID を確認する
  • 解決策 1: 古いホスト キーを手動で削除する (Windows、Mac、Ubuntu)
  • 解決策 2: known_hosts ファイル全体をクリアする (Windows、Mac、Ubuntu)
  • 解決策 3: ホスト キー チェックを一時的に無視する (Windows、Mac、Ubuntu)
  • 解決策 4: 新しいホスト キーを手動で追加する (Windows、Mac、Ubuntu)
  • 解決策 5: DNS または IP アドレスの変更を確認する (Windows、Mac、Ubuntu)
  • 今後この問題を回避するためのベスト プラクティス (Windows、Mac、Ubuntu)
  • 結論

SSH を使用してリモート サーバーに接続しようとすると、 「警告: リモート ホスト ID が変更されました!」というエラー メッセージが表示される場合があります。 。このメッセージは、第三者がサーバーとの通信を傍受する可能性がある中間者攻撃からユーザーを保護するために SSH が使用するセキュリティ機能です。

簡単に言えば、この警告は、サーバーのフィンガープリント (ローカル マシンに保存されている一意の識別子) が SSH が以前に記録したものと一致しないことを示します。これは、サーバーの再インストールや IP アドレスの変更などの正当な変更である可能性がありますが、潜在的なセキュリティ上の脅威を示している可能性もあります。 SSH は、サーバーの信頼性を確認するまで、システムを保護するために接続をブロックします。

この記事では、 MacUbuntu (Linux) 、およびWindowsシステムでこの問題を安全に解決し、潜在的なリスクを無視することなく安全に接続を継続できるようにする方法を説明します。

興味があるかもしれません: アクセス許可が拒否されたエラーを修正する方法 (Publickey)

警告を理解する

警告が表示されるのはなぜですか?

SSH は、リモート サーバーのキーのフィンガープリントをローカル マシン上のknown_hostsというファイルに保存します。このフィンガープリントは、SSH を使用するたびに同じサーバーに接続していることを確認するために使用されます。サーバーのフィンガープリントが変更されると、SSH は警告を表示します。これは、サーバーの ID が正当に変更されたかどうか、または誰かが接続を傍受しようとしているかどうかを確認できないためです。

警告の一般的なシナリオ:

  • サーバーの再インストールまたはアップグレード:サーバーが再インストール、リセット、またはアップグレードされた場合は、 known_hostsファイルに保存されているものと一致しない新しい SSH キーが生成される可能性があります。
  • IP アドレスの変更:サーバーの IP アドレスが変更された場合 (新しいホスティング プロバイダーまたはネットワークへの移動などにより)、SSH はこれを不審な変更としてフラグを立てる可能性があります。
  • DNS の変更:サーバーの DNS レコードに更新または構成ミスがある場合、SSH はこれを別のサーバーとして解釈する可能性があります。
  • サーバー構成の変更:サーバー管理者が SSH キー構成を変更し、その結果、以前のキーと一致しない新しいキーが作成される場合があります。
  • 潜在的なセキュリティの脅威 (中間者攻撃):この警告は、何者かがサーバーへの接続を傍受しようとしている兆候である可能性があります。変更内容が不明な場合は、続行する前にサーバーの ID を確認することが重要です。

known_hostsファイルの役割:

known_hostsファイルには、SSH が以前に接続したことのあるリモート ホストに関する情報が保存されます。このファイルは通常、Mac および Ubuntu の~/.ssh/ディレクトリにあり、Windows のPuTTYユーザーの場合は、ホスト キーを Windows レジストリに保存します。

サーバーの ID を確認する

リモート ホスト ID が変更されました!」を解決するために変更を加える前に、 」という警告が表示される場合は、サーバーの ID が正当に変更されたかどうかを確認することが重要です。この手順により、中間者攻撃の被害に遭わないことが保証されます。

最初にサーバーの ID を確認する必要がある理由

この手順を無視すると、侵害されたサーバーまたは悪意のあるサーバーに接続することになり、データや資格情報が危険にさらされる可能性があります。特にサーバーに対する最近の変更について確信が持てない場合は、この警告を常に真剣に扱ってください。

サーバーの ID を確認する手順:

  • サーバー管理者に連絡する:サーバーの管理者ではない場合は、管理者またはホスティング プロバイダーに連絡して、IP アドレスの変更、サーバーの再インストール、キーの再生成など、最近変更が加えられたかどうかを尋ねます。
  • ホスト キーのフィンガープリントを比較する:次のコマンドを使用して、サーバーのホスト キーを手動で確認します。
     ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub

    出力にはホスト キーのフィンガープリントが表示され、 known_hostsファイル内のフィンガープリントと比較するか、サーバー管理者からの要求を比較できます。

解決策 1: 古いホスト キーを手動で削除する (Windows、Mac、Ubuntu)

Mac および Ubuntu (Linux) の場合:

  1. ターミナルを開きます。
  2. テキスト エディタを使用して~/.ssh/known_hostsファイルを開きます。
     nano ~/.ssh/known_hosts
  3. リモート サーバーのホスト名または IP アドレスに対応する行を検索します。
  4. 古いホストキーを含む行を削除します。
  5. ファイルを保存し、テキスト エディタを閉じます。
  6. SSH を使用してサーバーに再接続します。
     ssh <username>@<hostname>

自動削除 (Mac および Ubuntu):

known_hostsファイルを手動で編集する代わりに、次のコマンドを使用して古いホスト キーを自動的に削除できます。

 ssh-keygen -R <hostname or IP>

Windows の場合 (PuTTY を使用):

  1. パテを開きます。
  2. Windows + Rを押し、 regedit 」と入力して Enter を押します。
  3. レジストリ パスに移動します。
     HKEY_CURRENT_USER\Software\Myusername\PuTTY\SshHostKeys
  4. リモート サーバーのホスト名または IP アドレスに関連付けられたエントリを見つけます。
  5. エントリを右クリックし、 [削除]を選択します。
  6. PuTTY でサーバーに再接続すると、新しいキーを受け入れるように求められます。

Windows の場合 (Git Bash を使用):

  1. Git Bash を開きます。
  2. 次のコマンドを実行します。
     ssh-keygen -R <hostname>
  3. SSH では、次回接続するときに新しいキーを受け入れるように求められます。

解決策 2: known_hostsファイル全体をクリアする (Windows、Mac、Ubuntu)

Mac および Ubuntu (Linux) の場合:

  1. ターミナルを開きます。
  2. 次のコマンドを実行して、 known_hostsファイル全体を削除します。
     rm ~/.ssh/known_hosts
  3. SSH を使用してリモート サーバーに再接続します。
     ssh <username>@<hostname>

Windows の場合 (PuTTY を使用):

  1. パテを開きます。
  2. Windows + R を押し、 regeditと入力し、Enter を押してレジストリ エディタを開きます。
  3. 次の場所に移動します:
     HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys
  4. SshHostKeysフォルダーを右クリックし、 [削除]を選択します。これにより、保存されているすべてのホスト キーが削除されます。
  5. PuTTY を使用してサーバーに再接続すると、新しいホスト キーを受け入れるように求められます。

Windows の場合 (Git Bash を使用):

  1. Git Bash を開きます。
  2. 次のコマンドを実行して、 known_hostsファイルを削除します。
     rm ~/.ssh/known_hosts
  3. SSH を使用してサーバーに再接続すると、新しいホスト キーを受け入れるように求められます。

解決策 3: ホスト キー チェックを一時的に無視する (Windows、Mac、Ubuntu)

サーバーにすぐに接続する必要があり、古いホスト キーを手動で削除する時間がない場合は、ホスト キーの検証を一時的にバイパスできます。この方法は緊急時には機能しますが、潜在的なセキュリティ リスクにさらされる可能性があるため、通常の使用にはお勧めできません

Mac および Ubuntu (Linux) の場合:

 ssh -o StrictHostKeyChecking=no <username>@<hostname>

Windows の場合 (Git Bash を使用):

 ssh -o StrictHostKeyChecking=no <username>@<hostname>

Windows の場合 (PuTTY を使用):

  1. パテを開きます。
  2. [接続] > [SSH] > [ホスト キー]に移動します。
  3. [常に受け入れる]を選択して、ホスト キーのチェックを無効にします。
  4. ホストキーを検証せずにサーバーに再接続します。

解決策 4: 新しいホスト キーを手動で追加する (Windows、Mac、Ubuntu)

Mac および Ubuntu (Linux) の場合:

 ssh-keyscan -H <hostname> >> ~/.ssh/known_hosts

Windows の場合 (Git Bash を使用):

 ssh-keyscan -H <hostname> >> ~/.ssh/known_hosts

Windows の場合 (PuTTY を使用):

残念ながら、PuTTY にはssh-keyscanに直接相当するものはありません。ホスト キーを手動で追加するには、サーバーに接続し、PuTTY が新しいホスト キーの入力を求めるプロンプトを表示できるようにする必要があります。

解決策 5: DNS または IP アドレスの変更を確認する (Windows、Mac、Ubuntu)

Mac および Ubuntu (Linux) の場合:

 nslookup <hostname>
 dig <hostname>

Windows の場合 (Git Bash を使用):

 nslookup <hostname>
 dig <hostname>

Windows の場合 (PuTTY を使用):

  1. コマンド プロンプトまたはPowerShell を開きます。
  2. 次のコマンドを使用して、DNS または IP アドレスを確認します。
     nslookup <hostname>
  3. 出力内の IP アドレスを、PuTTY がレジストリに表示するものと比較します。
  4. IP アドレスが変更された場合は、次の場所に移動して、PuTTY のレジストリから古いホスト キーを削除します。
     HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys
  5. PuTTY 経由で再接続すると、新しいキーを受け入れるように求められます。

今後この問題を回避するためのベスト プラクティス (Windows、Mac、Ubuntu)

  • 静的 IP アドレスを使用する:警告をトリガーする可能性のある予期しない変更を防ぐために、サーバーに静的 IP アドレスを構成します。
  • known_hostsを定期的にクリーンアップまたは更新する:古いまたは廃止されたホスト キーを定期的に確認してクリーンアップします。
  • SSH 証明書の使用を検討する:スケーラブルなホスト キー管理に SSH 証明書を使用すると、この警告が表示される可能性が低くなります。
  • DNS または IP の変更を監視する: DNS レコードまたは IP アドレスの変更を監視し、それに応じてknown_hosts更新します。

結論

「リモートホストの識別が変更されました!」警告は、リモート サーバーの ID を確認することで不正アクセスを防止する SSH の重要なセキュリティ機能です。憂慮すべきことかもしれませんが、変更を進める前に、サーバーの ID を確認するために必要な手順を実行することが重要です。

この記事で説明する解決策を使用すると、 WindowsMac 、またはUbuntuのいずれを使用している場合でも、警告を安全に解決できます。最初にサーバーの信頼性を必ず確認してから、古いホスト キーを削除するか、 known_hostsファイルをクリアするか、一時的にチェックをバイパスするかなど、状況に最も適したソリューションを選択してください。

さらに、静的 IP アドレスの使用、 known_hosts定期的な更新、SSH 証明書の検討などのベスト プラクティスに従うことで、将来この問題の発生を最小限に抑えることができます。