Generate SSH keys en Ubuntu: crear y configurar una clave SSH

En Ubuntu puedes generar un par de claves SSH a través de la terminal con gran facilidad. Después, solo tienes que enviar a tu servidor la clave pública para iniciar sesión allí de forma segura. A continuación, te mostramos los pasos que debes seguir.

¿Qué es una clave SSH?

Si quieres utilizar conexiones seguras a través de SSH, puedes autenticarte sin introducir una contraseña usando claves SSH, llamadas SSH keys en inglés. Esto requiere dos claves SSH: una clave pública y otra privada. La clave pública se almacena en el sistema con el que vas a establecer la conexión SSH, por ejemplo, en un servidor. La clave privada SSH, que debes proteger especialmente, se crea y almacena en tu equipo. Esta última es necesaria para descifrar la clave pública SSH cuando se establece la conexión.

Consejo

Las claves SSH se utilizan ahora para una amplia gama de servicios. Entre otras cosas, SSH es uno de los dos métodos de autenticación disponibles para el acceso a la línea de comandos en GitHub desde finales de 2021. Puedes leer más sobre este tema en nuestro artículo “Uso de una clave SSH con GitHub”.

Crear y configurar SSH keys en Ubuntu: guía paso a paso

El uso de pares de claves SSH para la autenticación es extremadamente práctico si quieres tener un inicio de sesión seguro en tus servidores o en determinados servicios sin necesidad de introducir una contraseña. En los siguientes pasos, te presentaremos un ejemplo de cómo, utilizando Ubuntu 22.04, generar claves SSH y configurarlas para la autenticación en un servidor, utilizando claves SSH en tus conexiones.

Consejo

¿Buscas una solución de alojamiento segura para tus archivos? ¡Alquila tu servidor Secure SFTP de IONOS para transferir y almacenar datos de forma segura a través de SSH y FTP

Paso 1. Crear un par de claves SSH

Generar claves SSH en Ubuntu es muy sencillo: puedes crear un par de claves públicas y privadas directamente a través de la terminal en cualquier momento. Para ello, abre la línea de comandos de Ubuntu y ejecuta el siguiente comando:

SSH-keygen
bash

Esto genera automáticamente un par de claves RSA con un cifrado de 3072 bits, que es más que suficiente para la mayoría de los casos de uso. También puedes crear claves más grandes con 4096 bits añadiendo el parámetro “-b 4096” al comando.

SSH-keygen -b 4096
bash

Una vez ejecutado el comando, Ubuntu generará un par de claves. El sistema te preguntará si quieres guardar las SSH keys en Ubuntu, en el directorio de usuario (subcarpeta /.SSH), y podrás confirmar esta petición con la tecla Intro. Alternativamente, escribe una ruta diferente.

ubuntu-create-ssh-key.jpg
Generar una clave SSH en Ubuntu a través de la terminal

Después de haber especificado la ubicación del par de claves, Ubuntu te ofrece definir una frase de contraseña segura. Una frase de contraseña añade una capa adicional de seguridad al método de autenticación encriptada para evitar que se conecten usuarios no autorizados. Escribe la frase que quieras o deja la entrada en blanco si prefieres prescindir de esta capa de seguridad.

En ambos casos, confirma con la tecla Intro y verás una imagen aleatoria o “randomart image” de las claves SSH como confirmación de la creación de las claves:

ubuntu-ssh-key-randomart-image.jpg
“randomart image” de un par de claves SSH de Ubuntu
Consejo

¿No estás seguro de la versión del sistema con la que trabajas actualmente? Lee el siguiente artículo sobre cómo mostrar la versión de Ubuntu.

Paso 2. Transferir la clave pública al servidor

El siguiente paso es transferir la clave pública al sistema de destino con el que quieras establecer conexiones SSH seguras en el futuro. Para ello, necesitas el nombre de usuario que utilizas para conectarte al sistema, así como la dirección IP o el dominio del sistema. Si aún no has definido un nombre de usuario, podrías utilizar el usuario “root” en su lugar.

Para la transmisión de la clave pública SSH, Ubuntu proporciona la herramienta SSH-copy-id por defecto. La sintaxis del comando correspondiente es la siguiente:

SSH-copy-id nombre-usuario@dirección-ip/dominio
bash

Cuando te conectas al host de destino por primera vez, la terminal te presenta el mensaje de que no se puede establecer la autenticación del host (“authenticity of host … can’t be established”). Teclea “yes” y confirma la entrada para continuar con la configuración.

ubuntu-add-public-key-terminal.jpg
Transferencia de la clave pública SSH a través de la terminal de Ubuntu

A continuación, el servicio busca la clave que has creado anteriormente y, una vez que la encuentra, puedes continuar el proceso introduciendo la contraseña para iniciar la sesión en el sistema de destino. La configuración se ha completado y verás el siguiente mensaje si la clave pública se ha transferido con éxito:

ubuntu-ssh-key-successful-add.jpg
SSH key en Ubuntu: transferencia al sistema de destino exitosa

Paso 3. Autenticar SSH en el host de destino

Ahora puedes conectarte en cualquier momento a través de SSH al dispositivo o servidor que tenga la clave pública. Al igual que con la transmisión de la clave, necesitas el nombre de usuario y la dirección IP o el dominio del host de destino. Para identificarte después de crear tus claves SSH en Ubuntu, tienes que escribir el comando de la siguiente manera:

SSH nombre-de-usuario@dirección-ip/dominio
bash

Si has configurado una frase de contraseña para el par de claves, esta se solicitará en el siguiente paso. Introduce la contraseña asignada y pulsa “Unlock” para conectarte al sistema de destino.

ubuntu-ssh-key-enter-password.jpg
SSH key en Ubuntu: escribe la la frase de contraseña

Paso 4. Desactivar la introducción de la contraseña

Si puedes iniciar la sesión con el par de claves SSH, ya no te hace falta recurrir al inicio de sesión con contraseña estándar. En principio, sin embargo, este procedimiento de autenticación sigue activo, incluso para personas no autorizadas que quieran acceder al sistema, por ejemplo, usando ataques de brute force.

Si quieres mejorar la seguridad en este punto, puedes desactivar el inicio de sesión mediante contraseña en el servidor o en el dispositivo de destino. Para ello, inicia la sesión a través de SSH y abre el archivo de configuración del servicio SSH:

sudo nano /etc/SSH/SSHd_config
bash

En el archivo de configuración, busca la entrada “PasswordAuthentication” y corrígela escribiendo “no”.

ubuntu-ssh-service-config-file-change-passauth.jpg
Ajuste del archivo de configuración del servicio SSH

Guarda los cambios en el archivo de configuración y reinicia el servicio SSH con el siguiente comando:

sudo systemctl restart SSH
bash

Cómo transferir manualmente tu clave SSH en Ubuntu

La herramienta SSH-copy-id descrita en el segundo paso no está disponible en todos los sistemas. En ese caso, sin embargo, puedes simplemente transferir la clave pública creada manualmente al sistema de destino.

Para ello, primero muestra tu clave pública ejecutando el siguiente comando:

cat ~/.SSH/id_rsa.pub
bash
ubuntu-public-ssh-key-terminal.jpg
Clave pública SSH generada en la terminal de Ubuntu

Copia la clave reproducida en el archivo “authorised_keys” en el directorio “SSH” del host de destino. Si el directorio aún no existe, créalo con los siguientes comandos:

mkdir -p ~/.SSH
bash

Después puedes transferir la clave escribiendo el siguiente comando:

echo clave >> ~/.SSH/authorized_keys
bash

En lugar de “clave”, escribe el mensaje mostrado anteriormente por el comando, empezando por “SSH-rsa”.

En el último paso, asegúrate de eliminar todos los permisos de grupo y demás para el directorio “SSH” y el archivo “authorised_keys”:

chmod -R go= ~/.SSH
bash
Consejo

¿Buscas más información sobre los temas “SSH” y “Ubuntu”? Los siguientes artículos de nuestra Digital Guide también te podrían interesar:

¿Le ha resultado útil este artículo?
Page top