Cómo generar y usar claves SSH en Ubuntu

Si eres nuevo en el uso de SSH o quieres repasar cómo generar y utilizar claves SSH en Ubuntu, este tutorial te guiará paso a paso. Incluye cómo copiar la clave al servidor y cómo deshabilitar la autenticación por contraseña para mejorar la seguridad.

¿Qué es SSH?

SSH (Secure Shell) es un protocolo de red que permite la comunicación segura entre dos sistemas. Se usa comúnmente para acceder a servidores de forma remota. Las claves SSH son una manera segura y conveniente de autenticar tu identidad sin necesidad de usar contraseñas.

En tu PC con Ubuntu, abre la aplicación de Terminal y ejecuta el siguiente comando para crear una clave SSH de 4096 bits con un comentario:

Bash
ssh-keygen -t rsa -b 4096 -C "tu-email@ejemplo.com"

  • -t rsa: Especifica el tipo de clave, en este caso RSA.
  • -b 4096: Establece el tamaño de la clave en 4096 bits para mayor seguridad.
  • -C "tu-email@ejemplo.com": Añade un comentario a la clave para identificarla fácilmente.
Elegir ubicación del archivo:

Por defecto, la clave se guarda en ~/.ssh/id_rsa. Puedes especificar un nombre diferente con la opción -f. Por ejemplo:

Bash
ssh-keygen -t rsa -b 4096 -C "tu-email@ejemplo.com" -f ~/.ssh/mi_clave_servidor

Esto creará:

  • Clave Privada: ~/.ssh/mi_clave_servidor
  • Clave Pública: ~/.ssh/mi_clave_servidor.pub
Proteger la clave privada:

Se te pedirá que ingreses una contraseña para proteger tu clave privada. Esta contraseña es opcional pero recomendable para añadir una capa extra de seguridad.

Usar ssh-copy-id:

La forma más sencilla de copiar tu clave pública al servidor es usando el comando ssh-copy-id. Sustituye usuario y servidor con tus datos:

Bash
ssh-copy-id -i ~/.ssh/mi_clave_servidor.pub usuario@servidor

Este comando copiará el contenido de tu clave pública al archivo ~/.ssh/authorized_keys en el servidor. Asegúrate de que el archivo authorized_keys en el servidor tenga los permisos adecuados.

Copiar manualmente (si ssh-copy-id no está disponible):

Alternativamente, puedes copiar manualmente el contenido de la clave pública:

Bash
cat ~/.ssh/mi_clave_servidor.pub

Copia el resultado y pégalo en el archivo ~/.ssh/authorized_keys en el servidor. Puedes usar un editor como nano o vi:

Bash
ssh usuario@servidor
mkdir -p ~/.ssh
nano ~/.ssh/authorized_keys

Pega la clave pública y guarda el archivo.

Para mejorar la seguridad, puedes deshabilitar la autenticación por contraseña en el servidor y permitir solo la autenticación con claves SSH.

Editar el archivo de configuración de SSH:

Conéctate a tu servidor y abre el archivo de configuración SSH:

Bash
sudo nano /etc/ssh/sshd_config

Modificar la configuración:

Busca las siguientes líneas y asegúrate de que estén configuradas como sigue:

Bash
PasswordAuthentication no
ChallengeResponseAuthentication no

Estas configuraciones deshabilitan la autenticación por contraseña y por desafíos.

Reiniciar el servicio SSH:

Después de guardar los cambios, reinicia el servicio SSH para aplicar la nueva configuración:

Bash
sudo systemctl restart ssh

Conectar al servidor:

Cuando te conectes a tu servidor usando SSH, la autenticación se realizará automáticamente con tu clave privada. Usa el siguiente comando:

Bash
ssh usuario@servidor

Aquí, usuario es tu nombre de usuario en el servidor y servidor es la dirección IP o el nombre de dominio del servidor.

¿Puedo usar la misma clave en varios servidores?

Sí, puedes usar la misma clave SSH en varios servidores. Sin embargo, para mayor seguridad y organización, es recomendable generar claves separadas para diferentes servicios o servidores.

¿Puedo usar la misma clave para GitHub?

Sí, puedes utilizar la misma clave SSH para autenticarte en GitHub y otros servicios que requieran SSH.

Conclusión

Las claves SSH son una herramienta poderosa para la autenticación segura en servidores y servicios. Ahora que sabes cómo generarlas, copiarlas al servidor y deshabilitar la autenticación por contraseña, puedes mejorar la seguridad y eficiencia de tus conexiones remotas.