A verificação da chave do host SSH não pode ser desativada ao usar o salto com proxy

2

Estou tentando o SSH por meio de um jumpbox, mas o SSH parece querer verificar as chaves do host para o salto, mesmo que eu esteja dizendo para não usar as opções normais da linha de comando -o StrictHostKeyChecking=no -o UserKnownHostsFile=no .

Se eu for SSH diretamente para o jumpbox, posso fazer com que o SSH ignore o erro como esperado:

ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i ~/.ssh/id_jumpuser_rsa jumpuser@jumpbox

No entanto, se eu adicionar a opção de salto de proxy, de repente recebo o erro. O erro NÃO vem do jumpbox, não há arquivos known_hosts em nenhum diretório .ssh no jumpbox, nem estou logando como o jumpuser:

ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i ~/.ssh/id_jumpuser_rsa -J jumpuser@jumpbox [email protected]

A mensagem de erro:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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
<redacted>.
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:10
  remove with:
  ssh-keygen -f "/home/user/.ssh/known_hosts" -R jumpbox
ECDSA host key for jumpbox has changed and you have requested strict checking.
Host key verification failed.
ssh_exchange_identification: Connection closed by remote host

Onde user é meu usuário comum, não o usuário que estou tentando usar como SSH.

Eu não tenho ideia do que está acontecendo aqui. O SSH tem uma substituição especial que força a verificação do hostkey em situações de salto de proxy? Em caso afirmativo, é supremamente irritante, já que isso tornará o provisionamento de VM local uma verdadeira dor.

    
por siride 22.03.2017 / 21:54

1 resposta

5

O ProxyJump emite outro processo ssh , que não herda os argumentos da linha de comando que você especifica na linha de comando do primeiro comando ssh . Existem duas saídas possíveis:

  • Use essas opções no arquivo de configuração em ~/.ssh/config - você pode economizar muito na digitação também!

    Host jumpbox
      User jumpuser
      StrictHostKeyChecking=no
      UserKnownHostsFile=/dev/null
      IdentityFile ~/.ssh/id_jumpuser_rsa
    

    e depois você pode se conectar como ssh -J jumpbox [email protected] .

  • Use a opção ProxyCommand - ela faz o mesmo trabalho, mas de forma mais transparente, para que você possa ver o que realmente está acontecendo:

    ssh -o ProxyCommand="ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i ~/.ssh/id_jumpuser_rsa -W %h:%p jumpuser@jumpbox" -i ~/.ssh/id_jumpuser_rsa [email protected]

por 22.03.2017 / 22:09