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.