O que é uma impressão digital de chave SSH e como ela é gerada?

O que é uma impressão digital de chave SSH e como ela é gerada?

Sempre descubro que recebo esta mensagem quando entro sshem uma nova máquina:

12:f8:7e:78:61:b4:bf:e2:de:24:15:96:4e:d4:72:53

O que isso significa? Todas as máquinas terão sempre a mesma impressão digital?

Como essas impressões digitais são geradas? De quais parâmetros eles dependem?

Responder1

A impressão digital é baseada na chave pública do host, geralmente baseada no /etc/ssh/ssh_host_rsa_key.pubarquivo. Geralmente é para fácil identificação/verificação do host ao qual você está se conectando.

Se a impressão digital mudar, a máquina à qual você está se conectando alterou sua chave pública. Isso pode não ser uma coisa ruim (acontece com a reinstalação do ssh), mas também pode indicar que você está se conectando a uma máquina diferente no mesmo domínio/IP (acontece quando você está se conectando através de algo como um balanceador de carga) ou que você está sendo alvo de um ataque man-in-the-middle, onde o invasor está de alguma forma interceptando/redirecionando sua conexão ssh para se conectar a um host diferente que pode estar bisbilhotando seu nome de usuário/senha.

Conclusão:se você for avisado sobre uma impressão digital alterada, seja cauteloso e verifique se está realmente se conectando ao host correto por meio de uma conexão segura. Embora na maioria das vezes isso seja inofensivo, pode ser uma indicação de um problema potencial.

Ver:http://www.lysium.de/blog/index.php?/archives/186-How-to-get-ssh-server-fingerprint-information.html
e:http://en.wikipedia.org/wiki/Public_key_fingerprint

Responder2

Você pode gerar uma impressão digital para uma chave pública usando ssh-keygeno seguinte:

ssh-keygen -lf /path/to/key.pub

Exemplo concreto (se você usar uma chave pública RSA):

$ ssh-keygen -lf ~/.ssh/id_rsa.pub
2048 00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff /Users/username/.ssh/id_rsa.pub (RSA)

A primeira parte (2048)é o comprimento da chave em bits, a segunda parte (00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff)é a impressão digital da chave pública e a terceira parte é a localização do próprio arquivo da chave pública.

Nas versões mais recentes do OpenSSH, SHA-256 codificado em Base64 é mostrado em vez de MD5 hexadecimal. Para mostrar o hash do estilo legado, use

$ ssh-keygen -l -E md5 -f ~/.ssh/id_rsa.pub

Responder3

A impressão digital é o MD5 sobre os dados binários na chave pública codificada em Base64.

$ ssh-keygen -f foo
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in foo.
Your public key has been saved in foo.pub.
The key fingerprint is:
65:30:38:96:35:56:4f:64:64:e8:e3:a4:7d:59:3e:19 andrew@localhost
The key's randomart image is:
+--[ RSA 2048]----+
|       +*..+*    |
|      =. +.=     |
|     . . .o .    |
|         o+   E  |
|        S= . + o |
|        . o o +  |
|           .   . |
|                 |
|                 |
+-----------------+
$ cat foo.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEbKq5U57fhzQ3SBbs3NVmgY2ouYZfPhc6cXBNEFpRT3T100fnbkYw+EHi76nwsp+uGxk08kh4GG881DrgotptrJj2dJxXpWp/SFdVu5S9fFU6l6dCTC9IBYYCCV8PvXbBZ3oDZyyyJT7/vXSaUdbk3x9MeNlYrgItm2KY6MdHYEg8R994Sspn1sE4Ydey5DfG/WNWVrzFCI0sWI3yj4zuCcUXFz9sEG8fIYikD9rNuohiMenWjkj6oLTwZGVW2q4wRL0051XBkmfnPD/H6gqOML9MbZQ8D6/+az0yF9oD61SkifhBNBRRNaIab/Np7XD61siR8zNMG/vCKjFGICnp andrew@localhost
$ echo 'AAAAB3NzaC1yc2EAAAADAQABAAABAQDEbKq5U57fhzQ3SBbs3NVmgY2ouYZfPhc6cXBNEFpRT3T100fnbkYw+EHi76nwsp+uGxk08kh4GG881DrgotptrJj2dJxXpWp/SFdVu5S9fFU6l6dCTC9IBYYCCV8PvXbBZ3oDZyyyJT7/vXSaUdbk3x9MeNlYrgItm2KY6MdHYEg8R994Sspn1sE4Ydey5DfG/WNWVrzFCI0sWI3yj4zuCcUXFz9sEG8fIYikD9rNuohiMenWjkj6oLTwZGVW2q4wRL0051XBkmfnPD/H6gqOML9MbZQ8D6/+az0yF9oD61SkifhBNBRRNaIab/Np7XD61siR8zNMG/vCKjFGICnp' \
    | base64 -D | md5
6530389635564f6464e8e3a47d593e19

O md5sum 6530389635564f6464e8e3a47d593e19 é a impressão digital exibida quando a chave é gerada, apenas sem os dois pontos de separação.


No entanto, se você estiver lidando com as impressões digitais que a Amazon mostra no console EC2 Key Pairs, infelizmente isso pode ser uma fera diferente. Se for uma string hexadecimal de 32 dígitos, é a impressão digital de chave pública MD5 SSH padrão acima. Mas se tiver 40 dígitos hexadecimais, na verdade é uma impressão digital calculada tomando o SHA1 dochave privadano formato PKCS#8:

$ openssl pkcs8 -in foo -nocrypt -topk8 -outform DER | openssl sha1 -c
e2:77:39:d3:53:a7:62:68:5f:da:82:0e:99:61:30:64:a2:88:c4:58

Responder4

Para verificar a impressão digital presente no Azure Devops, você pode usar

$ ssh-keygen -E md5 -lf .ssh/id_rsa.pub
2048 MD5:ba:42:24:87:d6:7b:71:a2:3e:b5:9a:31:b2:2c:e0:00 CrazyGirrafe@Australasia (RSA)

informação relacionada