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 co­n­ti­nua­ción, te mostramos los pasos que debes seguir.

¿Qué es una clave SSH?

Si quieres utilizar co­ne­xio­nes seguras a través de SSH, puedes au­te­n­ti­car­te sin in­tro­du­cir una co­n­tra­se­ñ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 es­ta­ble­cer la conexión SSH, por ejemplo, en un servidor. La clave privada SSH, que debes proteger es­pe­cia­l­me­n­te, 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 au­te­n­ti­ca­ción di­s­po­ni­bles 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 co­n­fi­gu­rar SSH keys en Ubuntu: guía paso a paso

El uso de pares de claves SSH para la au­te­n­ti­ca­ción es ex­tre­ma­da­me­n­te práctico si quieres tener un inicio de sesión seguro en tus se­r­vi­do­res o en de­te­r­mi­na­dos servicios sin necesidad de in­tro­du­cir una co­n­tra­se­ña. En los si­guie­n­tes pasos, te pre­se­n­ta­re­mos un ejemplo de cómo, uti­li­za­n­do Ubuntu 22.04, generar claves SSH y co­n­fi­gu­rar­las para la au­te­n­ti­ca­ción en un servidor, uti­li­za­n­do claves SSH en tus co­ne­xio­nes.

Consejo

¿Buscas una solución de alo­ja­mie­n­to segura para tus archivos? ¡Alquila tu servidor Secure SFTP de IONOS para tra­n­s­fe­rir 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 di­re­c­ta­me­n­te 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 au­to­má­ti­ca­me­n­te un par de claves RSA con un cifrado de 3072 bits, que es más que su­fi­cie­n­te 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 pre­gu­n­ta­rá si quieres guardar las SSH keys en Ubuntu, en el di­re­c­to­rio de usuario (su­b­ca­r­pe­ta /.SSH), y podrás confirmar esta petición con la tecla Intro. Al­te­r­na­ti­va­me­n­te, escribe una ruta diferente.

Imagen: Crear la clave SSH en Ubuntu a través de la terminal
Generar una clave SSH en Ubuntu a través de la terminal

Después de haber es­pe­ci­fi­ca­do la ubicación del par de claves, Ubuntu te ofrece definir una frase de co­n­tra­se­ña segura. Una frase de co­n­tra­se­ña añade una capa adicional de seguridad al método de au­te­n­ti­ca­ción en­cri­p­ta­da para evitar que se conecten usuarios no au­to­ri­za­dos. Escribe la frase que quieras o deja la entrada en blanco si prefieres pre­s­ci­n­dir 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 co­n­fi­r­ma­ción de la creación de las claves:

Imagen: “randomart image” de un par de SSH keys de Ubuntu
“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 ac­tua­l­me­n­te? Lee el siguiente artículo sobre cómo mostrar la versión de Ubuntu.

Paso 2. Tra­n­s­fe­rir la clave pública al servidor

El siguiente paso es tra­n­s­fe­rir la clave pública al sistema de destino con el que quieras es­ta­ble­cer co­ne­xio­nes SSH seguras en el futuro. Para ello, necesitas el nombre de usuario que utilizas para co­ne­c­tar­te 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 tra­n­s­mi­sión de la clave pública SSH, Ubuntu pro­po­r­cio­na la he­rra­mie­n­ta SSH-copy-id por defecto. La sintaxis del comando co­rre­s­po­n­die­n­te 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 es­ta­ble­cer la au­te­n­ti­ca­ción del host (“au­the­n­ti­ci­ty of host … can’t be es­ta­bli­shed”). Teclea “yes” y confirma la entrada para continuar con la co­n­fi­gu­ra­ción.

Imagen: Transferencia de la clave pública SSH a través de la terminal de Ubuntu
Tra­n­s­fe­re­n­cia de la clave pública SSH a través de la terminal de Ubuntu

A co­n­ti­nua­ción, el servicio busca la clave que has creado an­te­rio­r­me­n­te y, una vez que la encuentra, puedes continuar el proceso in­tro­du­cie­n­do la co­n­tra­se­ña para iniciar la sesión en el sistema de destino. La co­n­fi­gu­ra­ción se ha co­m­ple­ta­do y verás el siguiente mensaje si la clave pública se ha tra­n­s­fe­ri­do con éxito:

Imagen: SSH key en Ubuntu: transferencia al sistema de destino exitosa
SSH key en Ubuntu: tra­n­s­fe­re­n­cia al sistema de destino exitosa

Paso 3. Au­te­n­ti­car SSH en el host de destino

Ahora puedes co­ne­c­tar­te en cualquier momento a través de SSH al di­s­po­si­ti­vo o servidor que tenga la clave pública. Al igual que con la tra­n­s­mi­sión de la clave, necesitas el nombre de usuario y la dirección IP o el dominio del host de destino. Para ide­n­ti­fi­car­te 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 co­n­fi­gu­ra­do una frase de co­n­tra­se­ña para el par de claves, esta se so­li­ci­ta­rá en el siguiente paso. Introduce la co­n­tra­se­ña asignada y pulsa “Unlock” para co­ne­c­tar­te al sistema de destino.

Imagen: SSH key en Ubuntu: escribe la la frase de contraseña
SSH key en Ubuntu: escribe la la frase de co­n­tra­se­ña

Paso 4. Des­ac­ti­var la in­tro­du­c­ción de la co­n­tra­se­ñ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 co­n­tra­se­ña estándar. En principio, sin embargo, este pro­ce­di­mie­n­to de au­te­n­ti­ca­ción sigue activo, incluso para personas no au­to­ri­za­das que quieran acceder al sistema, por ejemplo, usando ataques de brute force.

Si quieres mejorar la seguridad en este punto, puedes des­ac­ti­var el inicio de sesión mediante co­n­tra­se­ña en el servidor o en el di­s­po­si­ti­vo de destino. Para ello, inicia la sesión a través de SSH y abre el archivo de co­n­fi­gu­ra­ción del servicio SSH:

sudo nano /etc/SSH/SSHd_config
bash

En el archivo de co­n­fi­gu­ra­ción, busca la entrada “Pa­s­s­wo­r­dAu­the­n­ti­ca­tion” y corrígela es­cri­bie­n­do “no”.

Imagen: Ajuste del archivo de configuración del servicio SSH
Ajuste del archivo de co­n­fi­gu­ra­ción del servicio SSH

Guarda los cambios en el archivo de co­n­fi­gu­ra­ción y reinicia el servicio SSH con el siguiente comando:

sudo systemctl restart SSH
bash

Cómo tra­n­s­fe­rir ma­nua­l­me­n­te tu clave SSH en Ubuntu

La he­rra­mie­n­ta SSH-copy-id descrita en el segundo paso no está di­s­po­ni­ble en todos los sistemas. En ese caso, sin embargo, puedes si­m­ple­me­n­te tra­n­s­fe­rir la clave pública creada ma­nua­l­me­n­te al sistema de destino.

Para ello, primero muestra tu clave pública eje­cu­ta­n­do el siguiente comando:

cat ~/.SSH/id_rsa.pub
bash
Imagen: Clave pública SSH generada en la terminal de Ubuntu
Clave pública SSH generada en la terminal de Ubuntu

Copia la clave re­pro­du­ci­da en el archivo “au­tho­ri­sed_keys” en el di­re­c­to­rio “SSH” del host de destino. Si el di­re­c­to­rio aún no existe, créalo con los si­guie­n­tes comandos:

mkdir -p ~/.SSH
bash

Después puedes tra­n­s­fe­rir la clave es­cri­bie­n­do el siguiente comando:

echo clave >> ~/.SSH/authorized_keys
bash

En lugar de “clave”, escribe el mensaje mostrado an­te­rio­r­me­n­te 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 di­re­c­to­rio “SSH” y el archivo “au­tho­ri­sed_keys”:

chmod -R go= ~/.SSH
bash
Consejo

¿Buscas más in­fo­r­ma­ción sobre los temas “SSH” y “Ubuntu”? Los si­guie­n­tes artículos de nuestra Digital Guide también te podrían interesar:

Ir al menú principal