メインコンテンツへスキップ
見出し画像

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で説明しています。

    参考情報

     
     
    外資系テックの仕事と、ネットワーク・AI・動画制作を実際に試す人。日本の仕事を少し便利にする方法を書いています。Linksys / OpenWrt / IPoE / Apple / YouTube tools. 個人の発信です。

    あなたへのおすすめ