Linux / Comando ssh-keygen: generar claves SSH y comprobar sus huellas
ssh-keygen genera claves para la autenticación de Secure Shell (SSH) y permite consultar sus huellas digitales. Mantenga la clave privada en el equipo cliente y registre únicamente la clave pública en el servidor.
En la autenticación mediante clave pública, la clave privada se utiliza para la firma y el servidor la verifica con la clave pública registrada. Normalmente, la clave pública lleva algo como .pub, al igual que id_ed25519 y id_ed25519.pub. La huella digital de la clave es un valor que identifica brevemente el contenido de la clave, y si se establece una frase de contraseña (passphrase) al generar la clave, se añade una capa de defensa frente a la filtración del archivo de clave privada.
Sintaxis básica
ssh-keygen [opciones]
La implementación instalada y las opciones pueden variar según la distribución. Verifique la descripción de man ssh-keygen en el sistema actual.
Ejemplos de uso
Crear un par de claves Ed25519
Ejecute la generación en el equipo cliente. El directorio ~/.ssh debe existir; si es necesario, créelo con mkdir -p ~/.ssh y limite sus permisos con chmod 700 ~/.ssh. Elija una ruta nueva y compruebe que no sobrescribe una clave existente. Introduzca la frase de contraseña cuando se solicite, sin incluirla en la línea de órdenes.
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_work -C 'user@example.com'
Verificar la huella digital de la clave pública
Compare la clave que se registrará en el servidor para asegurarse de que es la clave prevista.
ssh-keygen -lf ~/.ssh/id_ed25519_work.pub
Regenerar la clave pública a partir de la clave privada
Si se pierde el archivo de la clave pública, se puede imprimir la clave pública sin exponer la clave privada.
ssh-keygen -y -f ~/.ssh/id_ed25519_work
Verificar la huella digital de la clave generada
Después de crear la clave, puede consultar la huella digital del archivo de clave pública para confirmar que la clave que desea registrar en el servidor es la correcta. La huella digital real es única para cada clave.
ssh-keygen -lf ~/.ssh/id_ed25519_work.pub
Ejemplo de formato de salida (huellas digitales omitidas para fines ilustrativos):
256 SHA256:... user@example.com (ED25519)
El 256 anterior indica el tamaño de la clave, y el paréntesis muestra el tipo de clave. Si crea una nueva clave en la ruta de archivo existente, la clave privada anterior puede ser sobrescrita, y puede que no pueda conectarse al servidor que usaba esa clave. Distribuya solo la clave pública al servidor y no cargue la clave privada en correos electrónicos, mensajeros o formularios web.
Opciones y formatos principales
| Opción o formato | Descripción |
|---|---|
-t tipo |
Especifique el tipo de clave a generar, como ed25519. |
-f archivo |
Especifique el archivo donde se guardará o leerá la clave. |
-C comentario |
Adjunte un comentario identificativo a la clave pública. |
-l |
Muestra la huella digital del archivo de clave. |
-y |
Se imprime la clave pública desde la clave privada. |
-p |
Se cambia la frase de contraseña de la clave privada existente. |
Precauciones al usar
Si reutiliza la ruta de la clave existente, es posible que no pueda iniciar sesión en los servidores que estaban usando la clave pública anterior. Antes de generar la nueva, verifique si ese archivo existe y lea la advertencia sobre sobrescribirlo. No suba la clave privada a correos electrónicos, mensajeros o páginas web y gestione los permisos y copias de seguridad. Si pierde la frase de contraseña, generalmente no se puede recuperar la clave, por lo que debe emitir un nuevo par de claves y reemplazar la clave pública en los servidores.
Preguntas frecuentes
¿Qué archivo debo copiar en el servidor?
Registre únicamente el archivo que contiene la clave pública, normalmente con sufijo .pub. La extensión es una convención: compruebe el contenido y la huella del archivo previsto, y conserve la clave privada fuera del servidor de destino.
Documentación oficial
Puede consultar el comportamiento exacto de las opciones y las diferencias según la implementación en la documentación oficial de ssh-keygen.




