¿Qué es una huella digital de clave SSH y cómo se genera?

¿Qué es una huella digital de clave SSH y cómo se genera?

Siempre encuentro que recibo este mensaje cuando entro sshen una máquina nueva:

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

Que significa? ¿Todas las máquinas tendrán siempre la misma huella digital?

¿Cómo se generan estas huellas dactilares? ¿De qué parámetros dependen?

Respuesta1

La huella digital se basa en la clave pública del host, generalmente basada en el /etc/ssh/ssh_host_rsa_key.pubarchivo. Generalmente es para una fácil identificación/verificación del host al que se está conectando.

Si la huella digital cambia, la máquina a la que se está conectando ha cambiado su clave pública. Puede que esto no sea algo malo (sucede al reinstalar ssh), pero también podría indicar que se está conectando a una máquina diferente en el mismo dominio/IP (sucede cuando se conecta a través de algo como un balanceador de carga) o que usted está siendo objetivo de un ataque de intermediario, donde el atacante de alguna manera intercepta/redirecciona su conexión ssh para conectarse a un host diferente que podría estar espiando su nombre de usuario/contraseña.

Línea de fondo:Si recibe una advertencia sobre una huella digital modificada, tenga cuidado y verifique que realmente se esté conectando al host correcto a través de una conexión segura. Aunque la mayoría de las veces esto es inofensivo, puede ser una indicación de un problema potencial.

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

Respuesta2

Puede generar una huella digital para una clave pública ssh-keygenasí:

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

Ejemplo concreto (si usa una clave 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)

La primera parte (2048)es la longitud de la clave en bits, la segunda parte (00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff)es la huella digital de la clave pública y la tercera parte es la ubicación del archivo de clave pública.

En las versiones más recientes de OpenSSH, se muestra SHA-256 codificado en Base64 en lugar de MD5 hexadecimal. Para mostrar el hash de estilo heredado, utilice

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

Respuesta3

La huella digital es el MD5 sobre los datos binarios dentro de la clave pública codificada en 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

El md5sum 6530389635564f6464e8e3a47d593e19 es la huella digital que se muestra cuando se genera la clave, solo que sin los dos puntos de separación.


Sin embargo, si se trata de las huellas digitales que Amazon muestra en la consola de pares de claves EC2, desafortunadamente esa puede ser una bestia diferente. Si es una cadena hexadecimal de 32 dígitos, es la huella digital de clave pública SSH MD5 estándar anterior. Pero si son 40 dígitos hexadecimales, en realidad es una huella digital calculada tomando el SHA1 delllave privadaen 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

Respuesta4

Para verificar la huella digital que está presente en Azure Devops, puede 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)

información relacionada