Cómo obtener la huella de una clave SSH
- Pega una o varias líneas de clave pública en Claves SSH, o suelta un archivo
.pub,authorized_keysoknown_hosts. - Cada clave tiene una tarjeta con el tipo, el tamaño o la curva, el comentario, las huellas SHA256 y MD5 y la línea exacta de
ssh-keygen -l. - Elige qué contiene el panel Salida: huellas SHA256, huellas MD5, una clave pública PEM (SPKI o PKCS#1), RFC 4716 o líneas OpenSSH normalizadas.
- Usa Copiar salida o Descargar con el resultado. Copiar huella en una tarjeta copia solo ese valor.
La entrada admitida va más allá de las líneas .pub simples: opciones de authorized_keys como from="10.0.0.0/8",command="…", líneas de known_hosts con nombres de host o entradas con hash |1|…, bloques RFC 4716 ---- BEGIN SSH2 PUBLIC KEY ----, certificados OpenSSH, claves públicas PEM y archivos -----BEGIN OPENSSH PRIVATE KEY-----.
Cómo se calcula la huella
Una línea de clave pública de OpenSSH tiene tres partes: el tipo, el blob de la clave en Base64 y un comentario.
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG4ZlfvPsoxxd6tpkc1MDAJvZf8exJSDeW7a3xQRKA7d alice@laptop
La huella es un hash del blob decodificado, 51 bytes en Ed25519:
| Formato | Valor para la clave de arriba |
|---|---|
| SHA256 (por defecto desde OpenSSH 6.8) | SHA256:XSOBs9uz/dFf9ci88yKGbLMcjtzblRna8F0VOmxZiv8 |
| MD5 (antiguo) | MD5:93:07:89:27:05:e1:7a:5d:92:6e:ab:13:1e:48:90:d5 |
Las huellas SHA256 se escriben en Base64 sin el = final, por eso siempre tienen 43 caracteres después del prefijo. El mismo cálculo en Python:
import base64, hashlib, sys
line = open(sys.argv[1]).read().split()
blob = base64.b64decode(line[1])
digest = hashlib.sha256(blob).digest()
print("SHA256:" + base64.b64encode(digest).decode().rstrip("="))
Consulta el relleno explicado para saber por qué se puede quitar el =, y Base64 en Python para más.
Comprobar una clave de host antes de confiar en ella
La primera vez que te conectas, OpenSSH pregunta: ED25519 key fingerprint is SHA256:…. Are you sure you want to continue connecting? La respuesta correcta depende de comparar ese valor con otro obtenido por otra vía:
- en la consola del servidor:
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub - en las huellas de clave de host que publica tu proveedor
- de un compañero que ya tiene el host en
known_hosts: pega aquí ese archivo y se listan todas las entradas con su huella
Para ver qué ofrece un servidor sin iniciar sesión, ssh-keyscan host.example.com | ssh-keygen -lf - imprime todas las huellas de sus claves de host.
Reconocer tipos de clave por su Base64
El blob empieza con el tipo de clave como cadena precedida de su longitud, así que cada tipo tiene un comienzo fijo en Base64:
| Empieza por | Tipo de clave |
|---|---|
AAAAC3NzaC1lZDI1NTE5 | ssh-ed25519 |
AAAAB3NzaC1yc2E | ssh-rsa |
AAAAE2VjZHNhLXNoYTItbmlzdHAyNT | ecdsa-sha2-nistp256 |
AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29t | sk-ssh-ed25519@openssh.com (llave de seguridad FIDO) |
AAAAIHNzaC1lZDI1NTE5LWNlcnQtdjAx | Certificado Ed25519 |
Si la palabra del tipo en la línea y el blob no coinciden, la tarjeta avisa del desajuste. Eso suele significar que alguien editó la línea a mano.
Avisos y límites
- RSA de menos de 2048 bits se marca como débil, y las claves DSA se marcan porque OpenSSH moderno las desactiva.
- Los certificados (
*-cert-v01@openssh.com) muestran el ID de clave, el número de serie, el tipo de usuario o host, los principales, la validez, las opciones críticas, las extensiones y la huella de la clave de la CA firmante. - Las claves FIDO (
sk-…) y Ed448 se decodifican, pero no tienen conversión a PEM. - El comentario guardado dentro de un archivo de clave privada no se muestra.
- SHA256 usa la API WebCrypto del navegador, que necesita una página https. MD5 lo calcula la propia página.
Preguntas frecuentes
¿Cómo encuentro la huella de mi clave SSH?
Pega arriba el contenido de tu archivo .pub o ejecuta ssh-keygen -lf ~/.ssh/id_ed25519.pub. Ambos imprimen una línea como 256 SHA256:XSOBs9uz… alice@laptop (ED25519).
¿Por qué mi huella se ve distinta en otro servidor o servicio?
Normalmente es por el hash: las herramientas antiguas y algunas consolas web muestran MD5 en hex separado por dos puntos (MD5:93:07:89:…), y OpenSSH moderno muestra SHA256 en Base64. Cambia Salida a huellas MD5 para comparar con la forma antigua.
¿Es seguro pegar aquí mi archivo de clave privada?
La herramienta solo lee la sección pública de un archivo OPENSSH PRIVATE KEY, que se guarda sin cifrar incluso en las claves protegidas con contraseña, y no toca la parte privada. Aun así, pegar el archivo .pub es mejor costumbre.
¿De qué se calcula exactamente la huella SHA256?
Del blob binario de la clave, es decir, la parte Base64 de la línea .pub una vez decodificada. El comentario y el texto del tipo de clave que va delante no se incluyen, así que renombrar una clave no cambia su huella.