テスト用にリモートシステムでSSHを実行するときにリモートホストIDが変更されたシナリオを作成する方法

テスト用にリモートシステムでSSHを実行するときにリモートホストIDが変更されたシナリオを作成する方法

Linuxリモートシステムからステータスを返したいです。

"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r",
"@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @\r",
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r", 

/root/.ssh/known_hostしたがって、このシミュレーションを実行するために、ローカルファイル(テストマシン)からリモートマシンの特性の1つを変更します。

しかし、そのようなことは起こらないでしょう。

ベータマシンからリモートマシンへSSH経由で接続するとき

ssh alpha1

以下を取得せずにリモートシステムにアクセスできます。

"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r",
"@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @\r",
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r", 

それでは、このシナリオをどのようにシミュレートしますか?

ベストアンサー1

簡単な変更でこれを行う方法があるかもしれませんが、通常のユーザーとして実行されているサーバーを使用するソリューションは~/.ssh/known_hosts次のとおりです。sshd

mkdir -m 700 /tmp/ssh
ssh-keygen -qN '' -f /tmp/ssh/1st
ssh-keygen -qN '' -f /tmp/ssh/2nd
/usr/sbin/sshd -h /tmp/ssh/1st -p 2222 -o PidFile=/tmp/ssh/pid
ssh -o StrictHostKeyChecking=no -p 2222 localhost true
kill $(cat /tmp/ssh/pid)
/usr/sbin/sshd -h /tmp/ssh/2nd -p 2222 -o PidFile=/tmp/ssh/pid

今:

% ssh -p 2222 localhost true
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

その後、すすぎ、ssh-keygen -R [localhost]:2222繰り返します。必要に応じてツールを使用できます。

おすすめ記事