Por que o SSH reporta possíveis man-in-the-middle com diferentes tipos de chaves?

1

Estou tentando conectar-me a um servidor ao qual me conectei anteriormente. No entanto, a versão mais recente do OpenSSH não usa chaves DSA. Eu recebo o seguinte erro ao tentar se conectar:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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:mxVLlJWwlY7pRm1nhOksy0eS4KIQbAE8nv7x0p3Ds8Q.
Please contact your system administrator.
Add correct host key in /Users/john/.ssh/known_hosts to get rid of this message.
Offending ***DSA*** key in /Users/john/.ssh/known_hosts:25
***RSA*** host key for example.com has changed and you have requested strict checking.
Host key verification failed.

Eu descobri que o problema é que a chave DSA é armazenada em known_hosts , mas ainda não há chave RSA. Adicionar a chave RSA resolve o problema.

Acho que a mensagem é enganosa, a chave do host RSA não mudou.

Espero que o OpenSSH me informe que ainda não existe uma chave RSA e me ofereça para adicionar a chave. Ele também deve verificar o DNS para a chave e mostrar a mensagem Matching host key fingerprint found in DNS. (que eu configurei).

Vale a pena reportar ao OpenSSH como um bug?

    
por Marián Černý 04.01.2017 / 10:57

1 resposta

3

I think the message is misleading, the RSA host key did not change.

A mensagem é válida. A chave em seu known_hosts é DSA e o servidor envia RSA, eles diferem e está errado.

Desde o OpenSSH 6.8 o servidor envia todas as chaves após a autenticação para simplificar a rotação ou depreciação do hostkey.

Se você tiver um cliente e um servidor novos o suficiente, continue com a solução alternativa, aceite as chaves do DSA temporariamente e deixe o cliente escolher as novas:

ssh -oHostKeyAlgorithms=+ssh-dss your_remote_host

se o servidor tiver uma versão antiga, você precisará fazer isso manualmente, conforme explicado na pergunta.

Isso também precisa de um cliente configurado para aceitar as novas chaves: UpdateHostKeys yes .

    
por 04.01.2017 / 11:48

Tags