一馬力のメモ帳

MVSからLinuxまで。基盤屋さんは眠らない

sshで”WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!”が出力された時の対応方法[macOS]

f:id:htbariki:20181209151529p:plain

dhcp環境で運用していると
同じipアドレスが別なOSに割り振られる事があります

例えばip:192.168.3.5が機能まではCentOSに割り振られていたのに
今日はVyOSに割り振られている状態

dhcpとしては問題ないのですが
クライアントからipアドレス指定でssh接続でアクセスときは注意が必要です

sshクライアントは通常接続した事のあるサーバの公開鍵を
ipアドレス・ホスト名とセットで記憶しているため
サーバのipアドレスが変更になった場合は
「公開鍵が一致しないよ」と警告を出して接続できなくなります

このとき出力されるメッセージが

 ”WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!”

です。

今回はこの警告が出力された時の対応を紹介します

※試した環境は,この記事の最後にある通りmacOS+sshです。

目次


警告 ”WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!”

さて早速。出力される警告メッセージの紹介から

今回は192.168.3.5が割り振られたsshサーバが
前回接続したときから別のホストに変わってしまったときの例です。

MacBookPro:~ MBPR$ ssh vyos@192.168.3.5
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Please contact your system administrator.
Add correct host key in /Users/MBPR/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/MBPR/.ssh/known_hosts:23
RSA host key for 192.168.3.5 has changed and you have requested strict checking.
Host key verification failed.
MacBookPro:~ MBPR$

”Host key verification failed.”で接続できなくなっています

 known_hostsの状態

今回接続しようとしている192.168.3.5のvyosは一度もssh接続したことはありません
known_hostsには何もない状態のハズなのですが、、。

コマンド $ cat .ssh/known_hosts |grep 192.168.3.5

で確認してみます

しっかりレコードが含まれているね。
別のOSに192.168.3.5が割り振られているときに接続したときに記録されてのでしょう

MacBookPro:~ MBPR$ cat .ssh/known_hosts |grep 192.168.3.5
192.168.3.5 ssh-rsa AAAAB3NzaC1y〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜BAQC/OOkimO4cmII8sGfqotAZU9ss/NyK/1d4RxoYh2qTEVmc5SPFuE3LbesCTS6a7j4RQSl〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜QNHt9Ldhgl/NAVMb
MacBookPro:~ MBPR$

 known_hostsから不用なレコードを消す方法

known_hostsから不用なレコードを消す方法は

  • known_hostsを該当行をviなどのエディタで削除する
  • ssh-keygenコマンドで削除する

です。known_hostsの行数が少ないうちはエディタで削除しても手間ではないですが
数が多くなってくると探すのも,消すのも手間です。

エディタで削除する前に①バックアップをとって、②エディタで開いて、③該当行を検索して、④削除して、⑤確認して、、、
やっぱり手間です。

この手間を省いてくれるのがssh-keygenコマンド。私はこの方法をおすすめします

コマンドは

ssh-keygen -R 削除対象のホスト

です。実行すると自動でknown_hosts.oldのファイル名でバックアップまで取得してくれます

MacBookPro:~ MBPR$ ssh-keygen -R 192.168.3.5
# Host 192.168.3.5 found: line 23
/Users/MBPR/.ssh/known_hosts updated.
Original contents retained as /Users/MBPR/.ssh/known_hosts.old
MacBookPro:~ MBPR$

本当に削除されているかgrepで確認してみます

MacBookPro:~ MBPR$
MacBookPro:~ MBPR$ cat .ssh/known_hosts |grep 192.168.3.5
MacBookPro:~ MBPR$

しっかり削除されていますね。簡単です。

ssh接続

known_hostsもきれいになったので
ssh接続してみます

MacBookPro:~ MBPR$ ssh vyos@192.168.3.5
The authenticity of host '192.168.3.5 (192.168.3.5)' can't be established.
RSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxJI.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.3.5' (RSA) to the list of known hosts.
Welcome to VyOS
vyos@192.168.3.5's password:
Linux vyos 3.13.11-1-amd64-vyos #1 SMP Sat Nov 11 12:10:30 CET 2017 x86_64
Welcome to VyOS.
This system is open-source software. The exact distribution terms for
each module comprising the full system are described in the individual
files in /usr/share/doc/*/copyright.
Last login: Sun Dec  9 02:00:03 2018
vyos@vyos:~$

無事接続できるようになりましたね!

参考になれば幸いです。

試した環境

ホストOS

2500/15.4 MJLT2J/A MacBook Pro Retinaディスプレイ

MacBook Pro (Retina, 13-inch, Late 2013)
macOS Mojave
  システムのバージョン:    macOS 10.14.1 (18B75)
  カーネルのバージョン:    Darwin 18.2.0

スポンサーリンク