ホストIDの変更によりsshがリモートコマンドを実行できないかどうかを検出する方法は?

ホストIDの変更によりsshがリモートコマンドを実行できないかどうかを検出する方法は?

私はAWSでAmazon Linuxを使用しています。 SSHを使用して、次のようにリモートコマンドを実行してみてください。

% ssh somehost echo Hello World
@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@
<ECHO IS NOT EXECUTED HERE>
% echo $?    # last exit code
0

これが私が予想したものです(警告を修正する必要はありません。失敗は意図的に発生するものです)。ただし、リモートコマンドが実行されているかどうかを知る必要があります。問題は、ssh終了コードが0で、私のリモートコマンドが動的であり、原則として同じテキストを出力できることです(他のリモートコマンドを独自に実行しようとした場合、または一部のログファイルを読み取る場合)。

それでは、この場合、SSH接続が失敗したことを確認する方法は何ですか?

答え1

どのシェルを使用していますか? zshを使ってテストしましたが、bashは同じ出力を実行しますか?

➜  ~ ssh localhost echo Hello world
Hello world
➜  ~ echo $?
0
➜  ~ ssh localhost error           
bash: error: command not found
➜  ~ echo $?
127
➜  ~ 

➜  ~ ssh localhost fake
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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 ECDSA key sent by the remote host is
SHA256:vYFp+5TGBtJd9XgvTJdKbK2pQSFwARcnOHtAYWyCfCE.
Please contact your system administrator.
Add correct host key in /home/user/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/user/.ssh/known_hosts:1
  remove with:
  ssh-keygen -f "/home/user/.ssh/known_hosts" -R localhost
Password authentication is disabled to avoid man-in-the-middle attacks.
Keyboard-interactive authentication is disabled to avoid man-in-the-middle attacks.
bash: fake: command not found
➜  ~ echo $?
127

関連情報