Huellas
Una huella es un hash del blob de la clave pública, lo bastante corto para compararlo a ojo. OpenSSH muestra SHA-256 en Base64 (SHA256:…) desde la versión 6.8; la forma antigua MD5:xx:xx:… es lo que GitHub, AWS y la documentación antigua siguen mostrando para algunas claves. Ambas se calculan aquí a partir de los mismos bytes que hashea ssh-keygen -lf key.pub, así que coinciden exactamente. Úsalas para confirmar que una clave en authorized_keys es la que crees, para cotejar un aviso de clave de host con el ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub del servidor y para identificar claves en consolas de la nube.
Tipos de clave
| Tipo | Tamaño | Veredicto |
|---|---|---|
| ssh-ed25519 | 256 bits | La mejor opción: pequeña, rápida, sin errores de parámetros posibles. Soportada desde OpenSSH 6.5 (2014). |
| ssh-rsa | 2048–4096 | Bien con firmas SHA-2 (rsa-sha2-256/512, automático en OpenSSH actual); 3072+ bits para claves nuevas. El nombre del tipo es el mismo se usen firmas SHA-1 o SHA-2. |
| ecdsa-sha2-nistp256/384/521 | 256–521 | Bien, pero se prefiere Ed25519; las curvas NIST dependen de buena aleatoriedad al firmar. |
| ssh-dss | 1024 | Obsoleta; desactivada por defecto desde 7.0 y eliminada en 9.8. |
| [email protected] | 256 | Clave almacenada en una llave de seguridad FIDO2 (YubiKey); requiere un toque por uso. |
Formatos
La línea única de OpenSSH es tipo blob-base64 comentario, donde el blob es el nombre del tipo y los campos de la clave como cadenas con prefijo de longitud. PEM PUBLIC KEY (SubjectPublicKeyInfo) es lo que quieren OpenSSL, las bibliotecas JWT y la mayoría del software que no es SSH. ssh-keygen -e -m PKCS8 -f key.pub convierte en un sentido y ssh-keygen -i -m PKCS8 en el otro; esta página hace ambos sin los flags.
Restringir una clave
Las opciones al principio de una línea de authorized_keys limitan lo que puede hacer la clave: from= limita las direcciones de origen, command= fuerza un único comando (el original está disponible en $SSH_ORIGINAL_COMMAND) y restrict desactiva reenvío, PTY y agente con una sola palabra. Una clave de copia de seguridad debería ser restrict,command="rrsync /backup"; una clave de despliegue no debería permitir nada más que el script de despliegue.
Preguntas
¿Cómo obtengo mi clave pública?
cat ~/.ssh/id_ed25519.pub (o id_rsa.pub). Si solo tienes la clave privada: ssh-keygen -y -f ~/.ssh/id_ed25519 imprime la parte pública. Nunca pegues la clave privada (el archivo sin .pub) en ningún sitio.
¿Por qué GitHub muestra una huella distinta?
GitHub muestra huellas SHA256 para las claves añadidas desde 2018 y MD5 para las anteriores. Compara el formato correspondiente; aquí se muestran ambos. Asegúrate también de que miras el mismo archivo de clave.
¿Cómo verifico la huella de la clave de host de un servidor?
En el servidor: ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub. Compárala con lo que imprime el cliente en la primera conexión. Los proveedores de nube la muestran en la consola o en el registro serie; GitHub publica sus huellas en su documentación.
¿Puede convertir una clave privada?
No, por diseño. La conversión de claves privadas se hace en tu propia máquina: ssh-keygen -p -m PEM -f key (OpenSSH → PEM) o ssh-keygen -p -m RFC4716. Nada de lo que pegues aquí se envía, pero una clave privada nunca debería entrar en un navegador.