
En ssh
la autenticación de servidor y cliente, las huellas digitales de las claves se presentan de diferentes maneras, incluso usando el mismo comando ssh-keygen -lf
(en diferentes hosts o con respecto a diferentes claves).
Representación 1:
$ ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
256 SHA256:3RE3UrGaTAec8H4YnZG7JTlfXpKvl89iexdqzLCyffY root@hostname1 (ED25519)
Representación 2:
$ ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
d0:21:3e:ec:52:ff:19:a9:e7:71:b5:7f:63:23:57:f7
(ejemplo deesta página)
Representación 3:
AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBHVo5+sYnRQxerJjG/DmUzQFso+CGzcnGT/SDa457qQqh6WIquvWOIXIY5gNPZoOByAoriK+WRxgTT39hYFmpXE=
de
$ ssh-keygen -H -F hostname2
|1|/DmY6Hm8TdZogykndJOUacp2NaM=|uM+t3vLw3KRySPUeXNqBLCxaGtY= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBHVo5+sYnRQxerJjG/DmUzQFso+CGzcnGT/SDa457qQqh6WIquvWOIXIY5gNPZoOByAoriK+WRxgTT39hYFmpXE=
que es la línea del .ssh/known_hosts
archivo correspondiente a hostname2
.
¿Cuál es la diferencia entre ellos? Y, si son equivalentes, ¿cómo sacar cada representación de las demás?
Las representaciones 1 y 3 se obtuvieron utilizando OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017
Ubuntu 18.04.
Respuesta1
Versiones anteriores delssh-keygen
la utilidad de OpenSSH mostró solo hashes MD5; la utilidadahora el valor predeterminado es mostrar un hash SHA256, aunque aún puedes seleccionar un hash MD5 usando la -E
opción:
user@host:~/.ssh$ ssh-keygen -E md5 -l -f samplekey
2048 MD5:e6:1f:73:0f:14:cb:9a:71:2f:3b:31:b7:3f:58:1c:52 user@host (RSA)
user@host:~/.ssh$ ssh-keygen -E sha256 -l -f samplekey
2048 SHA256:Oyt9H15ZBmITbhljpSiE/BLreo/+j+6lsC3gClGI97U user@host (RSA)
user@host:~/.ssh$ ssh-keygen -B -l -f samplekey
2048 xomiz-lozad-ruzin-lasuz-vibic-fydar-hecoh-mapuv-vytus-futah-maxox user@host (RSA)
Además, puede agregar el -v
indicador (visual) en el hash MD5 o SHA256 para obtener una imagen de comparación de arte ascii además de un hash alfanumérico:
user@host:~/.ssh$ ssh-keygen -E sha256 -l -v -f samplekey
2048 SHA256:Oyt9H15ZBmITbhljpSiE/BLreo/+j+6lsC3gClGI97U user@host (RSA)
+---[RSA 2048]----+
| . .. =.. |
|.. +. + * |
|o o .+. . O . |
| o . .o... o o . |
|. ..E.S o|
| . . . . + |
|. . o..o . . o |
| . o +=.*.. o |
| .. o+BXo..o |
+----[SHA256]-----+
user@host:~/.ssh$
Su tercera representación no es una huella digital, sino la clave pública, codificada en base 64, tal como se almacenará en un samplekey.pub
archivo o en el known_hosts
archivo de un sistema que acepte esa clave.
No hay forma de determinar la clave a partir del hash; Para obtener el hash de la clave, use la ssh-keygen
utilidad con sus opciones predeterminadas o usando las opciones -E
, -B
y/o -v
para obtener el estilo de salida que prefiera.
Para obtener la huella digital de una clave en un known_hosts
archivo (en lugar de en el archivo de clave pública original, como en los ejemplos anteriores), puede canalizar una cadena que contenga el tipo de clave y la clave directamente a ssh-keygen
:
$ echo "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBHVo5+sYnRQxerJjG/DmUzQFso+CGzcnGT/SDa457qQqh6WIquvWOIXIY5gNPZoOByAoriK+WRxgTT39hYFmpXE=" | ssh-keygen -l -f -
256 SHA256:wOxOBgRQp1qQcnTIjgmE/GB8+3fm8ahyDXuL/2GzgIo no comment (ECDSA)