
OpenWrtのSSH警告は、known_hostsを丸ごと消さない。Windows/Mac共通の安全な直し方
SSHで REMOTE HOST IDENTIFICATION HAS CHANGED! と表示されたら、PCが覚えていた鍵と、今の接続先の鍵が違います。まずなぜ鍵が変わったのかを確認し、意図した変更だと分かった場合だけ対象1台の記録を直します。
動画ではWindowsの known_hosts 全体を空にする操作も紹介しましたが、この記事は対象ホストだけを削除する手順です。PC側のOpenSSHの接続記録を整理するもので、ルーターのファームウェアや設定を書き換えません。初回接続から試したい場合はSSHガイド033へ進んでください。
動画で見る
Windows PowerShellからのSSH接続、警告が出る場面、再接続、Macのターミナルまでを実画面で追えます。
LuCIとSSHの使い分け

普段の設定はLuCI、詳細な状態やログの確認はSSHで行えます。SSHで設定を変えるのは、コマンドの意味と戻し方が分かってからにします。
WindowsとMacで、接続コマンドは同じ

Windows 11では、PowerShellまたはWindows Terminalを開きます。Macでは「ターミナル」を開きます。
接続コマンドは同じです。
ssh root@192.168.10.1
root:OpenWrtの管理ユーザー
192.168.10.1:ルーターの管理IP。自分の環境に合わせて変更する
動画の別の検証場面では192.168.11.1も使っています。数字そのものを写すのではなく、いまLuCIを開いている管理IPへ合わせてください。
Windowsでsshが見つからない場合は、OpenSSHクライアントが有効か確認します。
パスワード入力中は、文字も*も表示されません。これは通常の動作です。入力後にEnterを押します。
「ホストキーが変わった」とは何か
SSHでは、接続先の機器が本当に前回と同じ相手かを見分けるため、ホストキーを使います。
初回接続時、PCは接続先の鍵をknown_hostsへ記録します。次回からは、同じIPやホスト名から同じ鍵が返るかを照合します。
ところが、次のような場面では鍵が変わることがあります。
OpenWrtルーターを別の個体へ交換した
ルーターを初期化した
ファームウェアを入れ直し、ホストキーが再生成された
以前とは別の機器へ、同じ管理IPを割り当てた
この時、PCは接続を止めます。

警告には、中間者攻撃の可能性も示されます。つまり「いつものルーターと違う鍵だから、本人確認が終わるまで接続しない」という動作です。
自分でルーターを交換した直後なら、理由を説明できます。一方、何も変更していないのに突然出たなら、古い記録を消して先へ進むべきではありません。まず配線、接続中のWi-Fi、管理IP、対象機器を確認します。
known_hostsを丸ごと消さない
動画では、Windows PowerShellで次のコマンドを使いました。
Clear-Content .ssh\known_hosts -Force
これはknown_hostsファイルの内容をすべて空にします。警告は消えますが、ほかのサーバーや機器についてPCが覚えていた鍵も一緒に消えます。

現在おすすめしたいのは、対象ホストだけを削除する方法です。警告に表示された接続先と変更理由を手元に記録してから、削除対象を確認します。コマンドはルーターへログインした後ではなく、接続元PCのPowerShellまたはターミナルで実行してください。
ssh-keygen -R 192.168.10.1
OpenSSHのssh-keygen -Rは、指定したホストに属する鍵をknown_hostsから削除します。ホスト名がハッシュ化されている場合にも使えます。
Windowsでも、OpenSSHクライアントを使っている環境なら同じコマンドをPowerShellで実行できます。Macもターミナルで同じです。
管理IPが192.168.1.1なら、次のようにします。
ssh-keygen -R 192.168.1.1
標準以外のポートを使い、[192.168.1.1]:2222の形式で記録されている場合は、ポートを含めて指定します。
ssh-keygen -R "[192.168.1.1]:2222"
再接続して、新しい鍵を確認する
古い記録を削除したら、もう一度接続します。
ssh root@192.168.10.1
初回接続と同じように、次の確認が表示されます。
Are you sure you want to continue connecting (yes/no/[fingerprint])?

ここでも、すぐyesと入力するのではなく、次を確認します。
表示されているIPが意図した管理IPか
鍵が変わった理由を自分で説明できるか
可能なら、ルーター側や別の信頼できる経路でフィンガープリントを確認できるか
確認できた場合にyesと入力し、新しい鍵を記録します。その後、ルーターの管理パスワードを入力します。削除が成功したこと自体は、接続先が正しい証拠にはなりません。確認できない場合は新しい鍵を登録せず、接続先の確認に戻ります。
同じ鍵で入り直せることを確認する
一度SSHを終了します。
exit
同じ管理IPへ再接続し、同じ鍵で接続できれば今回の作業は完了です。何も変更していないのに鍵が再び変わる場合は、削除を繰り返さず、接続先とネットワークを確認します。
公開する画面では、グローバルIP、MACアドレス、SSID、ユーザー名、鍵の情報を伏せてください。
それでも接続できない時
Connection timed out
接続先IPへ届いていない可能性があります。PCがOpenWrt側のLANまたはWi-Fiへ接続しているか、IPが正しいかを確認します。
Connection refused
機器へは届いていますが、SSHサービスが待ち受けていない可能性があります。LuCIの「システム」→「管理」→「SSHアクセス」を確認します。機種やバージョンによって表示名は異なります。
Permission denied
認証に成功していません。パスワード認証を使っている場合は、ユーザー名がrootか、現在の管理パスワードを使っているか、日本語入力やCaps Lockが有効になっていないかを確認します。公開鍵認証を設定している場合は、その鍵とルーター側で許可された認証方式を確認します。
Host key verification failed
鍵の不一致が解決していません。エラーに表示されたIPやホスト名と、ssh-keygen -Rへ指定した値が一致しているかを確認します。心当たりがない鍵変更なら、削除を繰り返さず止まります。
管理IPやパスワードも確認したい時
前段の設定は、LuCI初期設定052で説明しています。