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

97

Eu sempre acho que recebo esta mensagem quando eu ssh em uma nova máquina:

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

O que 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?

    
por Kit Ho 08.05.2012 / 16:22

4 respostas

46

A impressão digital é baseada na chave pública do host, geralmente baseada em "/etc/ssh/ssh_host_rsa_key.pub" Geralmente é para facilitar a 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 mudou sua chave pública. Isso pode não ser uma coisa ruim (acontece ao reinstalar o 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 a algo como balanceador de carga) ou estão sendo alvejados com um ataque man-in-the-middle, onde o invasor está de alguma forma interceptando / reencaminhando sua conexão ssh para conectar-se a um host diferente que poderia estar espionando seu usuário / pw.

Resumindo: 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 possível problema

Veja: link
e: link

    
por 08.05.2012 / 16:41
79

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

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 tamanho 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 arquivo de chave pública em si.

    
por 24.07.2012 / 18:26
57

A impressão digital é o MD5 da 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

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

No entanto, se você estiver lidando com as impressões digitais mostradas pela Amazon no console de pares de chaves do EC2, infelizmente isso pode ser uma fera diferente . Se for uma string hexadecimal de 32 dígitos, é a impressão digital da chave pública MD5 SSH padrão acima. Mas se são 40 dígitos hexadecimais, na verdade é uma impressão digital calculada ao tomar o SHA1 da chave privada no 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
    
por 08.02.2014 / 21:40
0
ssh-keygen -r host.name.com

Produzirá as impressões digitais de todas as chaves públicas configuradas em uma instância sshd.

Eles podem ser colocados em registros DNS SSHFP .

    
por 26.11.2017 / 05:32

Tags