Verifique a impressão digital da chave ECDSA enviada pelo host remoto [closed]

15

Eu recebi a mensagem de aviso bem conhecida ao tentar fazer ssh em um servidor:

$ ssh whateverhost
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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:xxxxxxxxxxxxxxxxxxxxxxxxxxx/xxxxxxxxx/xxxxxxx.
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
ECDSA host key for ipofmyhost has changed and you have requested strict checking.
Host key verification failed.

E eu sei porque eu mudei o ip desse servidor. Mas se não fosse assim, como eu poderia verificar a impressão digital da chave ECDSA enviada pelo host remoto?

Eu tentei fazer isso por:

echo -n ipofthehost | sha256sum

Mas eu não recebo a mesma impressão digital. Eu também tentei "hostname, ip" tipo como em aws, mas eu não tenho correspondência.

Se eu excluir a entrada do meu arquivo known_hosts e eu tentar o ssh novamente, ele terá êxito e informará o seguinte:

ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxx/xxxxxxxxx/xxxxxxx.
Are you sure you want to continue connecting (yes/no)? 

Então, para que aplicar o sha256sum para obter a impressão digital e como posso verificar?

    
por gugol 09.05.2015 / 22:18

2 respostas

10

Uma impressão digital de chave pública não é o simples hash de uma string IP.

Para recuperar uma chave pública do host remoto, você pode usar ssh-keyscan <IP> , então você pode usar as ferramentas usuais para extrair sua impressão digital ( ssh-keygen -lf <public_key_file> ).

Por fim, você pode comparar com a impressão digital atual no seu arquivo known_hosts com ssh-keygen -l -F <domain_or_ip> .

    
por 09.05.2015 / 23:07
5

Um pouco mais detalhadamente : Como a mensagem de advertência se refere à impressão digital da chave ECDSA enviada pelo host remoto, reunimos as informações sobre a chave pública (ecdsa) do host:

ssh-keyscan -t ecdsa ip_or_hostmane > ecdsa_file_to_compare

Em seguida, podemos descobrir onde no arquivo known_hosts está essa chave pública (ecdsa):

ssh-keygen -l -F ipofhost

Se quisermos comparar as impressões digitais, temos que colocar o conteúdo do nosso arquivo known_hosts (apenas a entrada relacionada a este host), podemos chamá-lo de ecdsa_file_from_known_hosts e compará-lo da seguinte maneira:

ssh-keygen -lf ecdsa_file_to_compare
ssh-keygen -lf ecdsa_file_from_known_hosts

E verifique se mostra o mesmo hash.

Claro que eles não combinam, é por isso que recebi a mensagem de aviso (o ssh verifica essa correspondência internamente). Se tivermos certeza sobre a mudança de ip (então não estamos sofrendo um ataque man-in-the-middle), podemos simplesmente deletar a entrada daquele host em nosso arquivo known_hosts e, da próxima vez, inseriremos uma nova entrada para será adicionado a esse arquivo.

    
por 11.05.2015 / 11:28