Cómo configurar claves SSH en Ubuntu 22.04 - Comandos en Linux

Cómo configurar claves SSH en Ubuntu 22.04

Vota post

El Protocolo de Shell Seguro (SSH) es un protocolo de red criptográfico que permite a los usuarios acceder de manera segura a una computadora remota a través de una red no segura. Ya lo vimos en un anterior articulo Como instalar SSH en Ubuntu y asegurar nuestro sistema y en Cómo usar SSH en Linux: Instalación, conexión y configuración de puerto. En este caso daremos un paso mas para no conectar por usuario y contraseña.

Aunque SSH admite la autenticación basada en contraseñas, generalmente se recomienda el uso de claves SSH en su lugar. Las claves SSH son un método más seguro para iniciar sesión en un servidor SSH, ya que no son vulnerables a los comunes ataques de fuerza bruta contra contraseñas.

Índice

¿Qué son las claves SSH?

Generar un par de claves SSH crea dos cadenas largas de caracteres: una clave pública y una clave privada. Puedes colocar la clave pública en cualquier servidor y luego conectarte al servidor utilizando un cliente SSH que tenga acceso a la clave privada.

claves SSH

Cuando las claves pública y privada coinciden, el servidor SSH otorga acceso sin necesidad de una contraseña. Puedes aumentar aún más la seguridad de tu par de claves protegiendo la clave privada con una frase de contraseña opcional (pero muy recomendada).

Paso a paso para configurar las claves SSH en Ubuntu

Paso 1 — Crear el Par de Claves El primer paso es crear un par de claves en la máquina cliente, que probablemente sea tu computadora local. Escribe el siguiente comando en tu línea de comandos local:

ssh-keygen -t ed25519

Verás una confirmación de que el proceso de generación de claves ha comenzado y se te pedirá información, que discutiremos en el siguiente paso.

Nota: Si estás en un sistema más antiguo que no admite la creación de pares de claves ed25519, o el servidor al que te estás conectando no las admite, debes crear en su lugar un fuerte par de claves rsa:

ssh-keygen -t rsa -b 4096

Esto cambia la bandera -t "tipo" a rsa y agrega la bandera -b 4096 "bits" para crear una clave de 4096 bits.

Paso 2 — Especificar Dónde Guardar las Claves La primera solicitud del comando ssh-keygen te preguntará dónde guardar las claves:

Enter file in which to save the key (/home/tu_usuario/.ssh/id_ed25519):

Puedes presionar ENTER aquí para guardar los archivos en la ubicación predeterminada en el directorio .ssh de tu directorio de inicio.

Alternativamente, puedes elegir otro nombre de archivo o ubicación escribiéndolo después de la solicitud y presionando ENTER.

Paso 3 — Crear una Frase de Contraseña La segunda y última solicitud de ssh-keygen te pedirá que ingreses una frase de contraseña:

Enter passphrase (empty for no passphrase):

Depende de ti si quieres usar una frase de contraseña, pero se recomienda encarecidamente: la seguridad de un par de claves, independientemente del esquema de cifrado, aún depende de que no sea accesible para nadie más.

Si una clave privada sin frase de contraseña cae en manos de un usuario no autorizado, podrá iniciar sesión en cualquier servidor que hayas configurado con la clave pública asociada.

La principal desventaja de tener una frase de contraseña, escribirla, se puede mitigar utilizando un servicio ssh-agent, que almacenará temporalmente tu clave desbloqueada y la pondrá a disposición del cliente SSH. Muchos de estos agentes están integrados con el almacén de claves nativo de tu sistema operativo, lo que hace que el proceso de desbloqueo sea aún más fluido.

Para resumir, todo el proceso de generación de claves se ve así:

ssh-keygen -t ed25519 Enter file in which to save the key (/home/tu_usuario/.ssh/id_ed25519): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/tu_usuario/.ssh/id_ed25519 Your public key has been saved in /home/tu_usuario/.ssh/id_ed25519.pub ...

La clave pública ahora se encuentra en /home/tu_usuario/.ssh/id_ed25519.pub. La clave privada ahora se encuentra en /home/tu_usuario/.ssh/id_ed25519.

Paso 4 — Copiar la Clave Pública a tu Servidor Una vez generado el par de claves, es hora de colocar la clave pública en el servidor al que deseas conectarte.

Puedes copiar la clave pública al archivo authorized_keys del servidor con el comando ssh-copy-id. Asegúrate de reemplazar el nombre de usuario y la dirección de ejemplo:

ssh-copy-id tu_usuario@tu_direccion_del_servidor

Una vez que el comando se complete, podrás iniciar sesión en el servidor a través de SSH sin que se te solicite una contraseña. Sin embargo, si estableciste una frase de contraseña al crear tu clave SSH, se te pedirá que ingreses la frase de contraseña en ese momento. Es tu cliente SSH local el que te pide que descifres la clave privada, no el servidor remoto pidiendo una contraseña.

Paso 5 — Desactivar la Autenticación SSH Basada en Contraseñas (Opcional)

Una vez que hayas copiado tus claves SSH en el servidor, es posible que desees prohibir completamente los inicios de sesión con contraseña configurando el servidor SSH para desactivar la autenticación basada en contraseñas.

Advertencia: antes de desactivar la autenticación basada en contraseñas, asegúrate de que puedes iniciar sesión con éxito en el servidor con tu clave SSH y de que no hay otros usuarios en el servidor que utilicen contraseñas para iniciar sesión.

Para desactivar la autenticación basada en contraseñas de SSH, abre el archivo de configuración de SSH. Normalmente se encuentra en la siguiente ubicación:

sudo nano /etc/ssh/sshd_config

Este comando abrirá el archivo dentro del editor de texto nano. Busca la línea en el archivo que incluye PasswordAuthentication (o crea la línea si no existe), asegúrate de que no esté comentada con un # al principio de la línea y cámbiala a no:

/etc/ssh/sshd_config PasswordAuthentication no

Guarda y cierra el archivo cuando hayas terminado. En nano, usa CTRL+O para guardar, presiona ENTER para confirmar el nombre del archivo y luego CTRL+X para salir.

Recarga el servicio sshd para poner estos cambios en efecto:

sudo systemctl reload sshd

Antes de salir de tu sesión actual de SSH, realiza una conexión de prueba en otra terminal para verificar que aún puedes conectarte.

Comprobar tus claves SSH existentes

Para verificar las claves SSH existentes en tu servidor Linux, puedes seguir estos pasos:

  1. Abre una terminal en tu computadora.
  2. Navega al directorio donde generalmente se almacenan las claves SSH. El directorio predeterminado es ~/.ssh/, puedes ir allí usando el siguiente comando: cd ~/.ssh/
  3. Dentro del directorio ~/.ssh/, deberías ver tus claves SSH. Utiliza el comando ls para listar los archivos en ese directorio: ls Esto debería mostrar las claves SSH existentes, que generalmente tienen nombres como id_rsa (clave privada) y id_rsa.pub (clave pública).
  4. Si deseas ver el contenido de una clave pública, puedes usar el comando cat. Por ejemplo: cat id_rsa.pub Esto mostrará el contenido de tu clave pública.

Estos pasos asumen que estás utilizando las convenciones predeterminadas para las claves SSH en un sistema basado en Unix. Si has creado claves con nombres diferentes o en ubicaciones personalizadas, debes ajustar los comandos en consecuencia.

En este tutorial, creamos un par de claves SSH, copiamos nuestra clave pública a un servidor y (opcionalmente) desactivamos completamente la autenticación basada en contraseñas.

Si quieres conocer otros artículos parecidos a Cómo configurar claves SSH en Ubuntu 22.04 puedes visitar la categoría Ubuntu.

Subir