Ao conectar-se a um servidor novo / desconhecido (com o OpenSSH recente), por exemplo:
ssh example.com
Você obtém a impressão digital como abaixo:
The authenticity of host 'example.org (192.0.2.42)' can't be established.
RSA key fingerprint is SHA256:7KMZvJiITZ+HbOyqjNPV5AeC5As2GSZES5baxy1NIe4.
Are you sure you want to continue connecting (yes/no)?
No entanto, as impressões digitais geralmente são fornecidas para o servidor desta forma:
f6:fc:1c:03:17:5f:67:4f:1f:0b:50:5a:9f:f9:30:e5
Como posso verificar a autenticidade (sem incomodar os administradores do servidor para fornecer uma impressão digital SHA256)?
Respostas:
Anteriormente, a impressão digital era dada como um hash md5 hexadecimal. A partir do OpenSSH 6.8, a impressão digital agora é exibida como base64 SHA256 (por padrão). Você não pode compará-los diretamente.
Eles também adicionaram uma nova opção de configuração
FingerprintHash
. Você pode colocarem sua
~/.ssh/config
reverter para o antigo ( menos seguro padrão) ou apenas usar esta opção para uso individual:o que daria a impressão digital como
Esperamos que os administradores de servidor forneçam os dois tipos de impressões digitais em um futuro próximo.
EDITAR:
Conforme indicado nos fóruns do Arch Linux , também há uma terceira opção:
EDITAR:
Você pode gerar o hash de uma chave arbitrária, conforme indicado no OpenSSH Cookbook :
Recupere a chave:
ssh-keyscan example.org > key.pub
/etc/ssh
Gere o hash:
key.pub
ou executarssh-keyscan -t rsa example.org > key.pub
ssh-keygen -l -f key.pub
(hash padrão, dependendo da versão do OpenSSH)ssh-keygen -l -f key.pub -E md5
(md5 no OpenSSH atual)awk '{print $2}' ssh_host_rsa_key.pub | base64 -d | sha256sum -b | awk '{print $1}' | xxd -r -p | base64
(sha256 no antigo OpenSSH)awk '{print $3}'
para versões mais recentes do ssh-keyscan porque o formato foi alterado)fonte
ssh-keygen -lf
no servidor só me dá a impressão md5, e para a vida de mim eu não consigo encontrar como obter o sha256 um quer nas páginas man ou o www tão longe ...awk
1-liner (não coincide com o hash mostrado pelo meu cliente)sha256sum -b | awk '{print $1}' | xxd -r -p
pode ser substituído poropenssl sha256 -binary
não exigir o vim instalado. A linha de comando resultante seria:awk '{print $2}' ~/.ssh/id_rsa.pub | base64 -d | openssl sha256 -binary | base64
Acabei de criar um pequeno script bash que imprimirá tabela com impressões digitais para todas as cifras de chave permitidas no servidor (de acordo com
/etc/ssh/sshd_config
) em ambosSSH-256
e emMD5
algo. Aqui está um exemplo de saída:O script também será executado em servidores com a
SSH
versão abaixo6.8
(antes da-E md5
opção ser adicionada).Edit: Versões atualizadas para versões ainda mais recentes do SSH, que alternaram as cifras padrão agora com suporte a imagens ASCII.
Esta é apenas uma impressão bonita usando as informações da
JonnyJD
resposta de. Obrigado.fonte
Acontece que o ssh-keygen (algum tempo após a versão 6.6; presumivelmente 6.8) tem uma
-E md5
opção que fará com que ela imprima a impressão digital como uma impressão digital md5. Portanto, se você puder pegar independentemente o arquivo de chave pública do servidor, poderá alimentá-lossh-keygen -E md5 -l -f ssh_host_rsa_key.pub
e obter sua impressão digital familiar.fonte
O one-liner a seguir funciona (pelo menos) em
Ubuntu 16.04,18.04 / Centos >= 7
(Testado com servidores:
openssh 3.9
-openssh 7.4
)Resultado:
fonte
tentou modificar para obter também arte aleatória na tabela:
... mas na verdade não sou programador e o script não funciona conforme o esperado. Apreciaria se alguém puder ajudar a corrigir (também a limpeza). Seria bom ter imagens de arte aleatórias sha256 e md5 lado a lado para usar o espaço com mais eficiência. Modifiquei também os comandos md5 e sha256, pois os originais não funcionaram para mim (provavelmente um sistema muito novo) - apenas o sha256 foi aprovado na tabela com o sinal "=" no final, que não fazia parte da impressão digital real e não podia removê-lo.
(desculpe, não pude comentar como me registrei recentemente)
fonte