Como detectar se o ssh não executou o comando remoto devido à mudança de identificação do host?

1

Estou usando o Amazon Linux no AWS. Tentando executar um comando remoto usando ssh assim:

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

Isso é algo que eu espero (não é necessário corrigir o aviso, a falha é por design). No entanto, preciso saber se meu comando remoto foi executado. O problema é que o código de saída ssh é 0 e meu comando remoto é dinâmico e pode, em princípio, produzir o mesmo texto (se, por exemplo, tentar executar outro comando remoto sozinho ou ler algum arquivo de log).

Então, como eu sei se o SSH não se conectou nesse caso?

    
por LOST 10.02.2017 / 19:20

1 resposta

2

Qual shell você está usando? Eu testei usando o zsh, mas o bash fará a mesma saída?

➜  ~ 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
    
por 11.02.2017 / 08:36

Tags