Eu recentemente tive que fazer isso sozinho, então pensei em adicionar uma resposta que mostre
como isso pode ser feito (com versões do OpenSSH 7.2 ou mais recente ) em uma linha
usando a substituição do processo:
ssh-keygen -lf <(ssh-keyscan hostname 2>/dev/null)
O texto a seguir explica como esses comandos funcionam e destaca alguns dos
diferenças de comportamento entre as versões mais antigas e mais recentes do OpenSSH
utilitários.
Buscar chaves de host públicas
O comando ssh-keyscan
foi desenvolvido para que os usuários possam obter o host público
chaves sem precisar autenticar no servidor SSH. De sua página de manual:
ssh-keyscan
is a utility for gathering the public ssh host keys of a
number of hosts. It was designed to aid in building and verifying
ssh_known_hosts
files.
Tipo de chave
O tipo de chave a ser buscada é especificado usando a opção -t
.
-
rsa1
(protocolo obsoleto do SSH versão 1)
-
rsa
-
dsa
-
ecdsa
(versões recentes do OpenSSH)
-
ed25519
(versões recentes do OpenSSH)
Em versões modernas do OpenSSH, os tipos de chave padrão a serem buscados são rsa
(desde a versão 5.1), ecdsa
(desde a versão 6.0) e ed25519
(desde a versão
6,7).
Com versões anteriores de ssh-keyscan
(antes do OpenSSH versão 5.1), o
O tipo de chave padrão era o rsa1
(Protocolo SSH 1) desatualizado, portanto, os tipos de chave
precisaria ser explicitamente especificado:
ssh-keyscan -t rsa,dsa hostname
Obter hashes de impressão digital de chaves Base64
ssh-keyscan
imprime a chave do host do servidor SSH em codificado em Base64
formato. Para converter isso em um hash de impressão digital, a utilidade ssh-keygen
pode ser
usado com sua opção -l
para imprimir a impressão digital do público especificado
chave.
Se você usar o Bash, o Zsh (ou o shell Korn), o processo
substituição pode ser usada
para um prático one-liner:
ssh-keygen -lf <(ssh-keyscan hostname 2>/dev/null)
Nota : Com as versões do OpenSSH anteriores a 7.2, as funções usadas por
ssh-keygen
para ler arquivos, não manipulou pipes nomeados (FIFOs) muito bem
Esse método não funcionaria, exigindo o uso de arquivos temporários.
Algoritmos de hash
Versões recentes dos hashes de impressão digital ssh-keygen
print SHA256 das chaves.
Para obter hashes MD5 das impressões digitais da chave do servidor (o comportamento antigo), o -E
opção pode ser usada para especificar o algoritmo de hash:
ssh-keygen -E md5 -lf <(ssh-keyscan hostname 2>/dev/null)
Usando um pipeline
Se estiver usando um shell POSIX (como dash
) que não possui substituição de processo,
as outras soluções usando arquivos temporários funcionarão. No entanto, com versões mais recentes
do OpenSSH (desde 7.2), um pipeline simples pode ser usado desde que ssh-keygen
aceita -
como um nome de arquivo para o fluxo de entrada padrão, permitindo uma linha
comando de pipeline.
ssh-keyscan hostname 2>/dev/null | ssh-keygen -E md5 -lf -