Quando eu faço login em um servidor/host SSH, sou questionado se o hash de sua chave pública está correto, assim:
# ssh 1.2.3.4
The authenticity of host '[1.2.3.4]:22 ([[1.2.3.4]:22)' can't be established.
RSA key fingerprint is SHA256:CxIuAEc3SZThY9XobrjJIHN61OTItAU0Emz0v/+15wY.
Are you sure you want to continue connecting (yes/no)? no
Host key verification failed.
Para poder comparar, usei este comando no servidor SSH anteriormente e salvei os resultados em um arquivo no cliente:
# ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub
2048 f6:bf:4d:d4:bd:d6:f3:da:29:a3:c3:42:96:26:4a:41 /etc/ssh/ssh_host_rsa_key.pub (RSA)
Por alguma grande razão (sem dúvida), um desses comandos usa uma maneira diferente (mais recente?) De exibir o hash, ajudando enormemente os invasores man-in-the-middle porque requer uma conversão não trivial para compará-los.
Como faço para comparar esses dois hashes, ou melhor: forçar um comando a usar o formato do outro?
A -E
opção para ssh-keygen
não está disponível no servidor.
ssh
ssh-keyscan & ssh-keygen
Outra abordagem é baixar a chave pública para um sistema que suporte os hashes MD5 e SHA256:
Apenas respondendo como visualizar as chaves locais, que também estão visíveis na outra resposta, mas podem ser perdidas. Na versão Ubuntu 19.04, pelo menos, SHA256 é o formato padrão para ssh-keygen:
Mas você pode especificar explicitamente o SHA256, é claro:
Se você quiser ver o MD5 em vez disso:
Que, aliás, é o formato usado uma vez pelo GitHub em sua lista de chaves SSH em sua conta. Para detalhes:
$man ssh-keygen
.