Claves SSH para servidores en nube
Las claves SSH (Secure Shell) son una parte esencial de la gestión segura de los servidores en la nube. Ofrecen un método más seguro y cómodo para autenticar a los usuarios en comparación con los inicios de sesión tradicionales basados en contraseñas. Mediante el uso de claves SSH, puede establecer conexiones seguras y cifradas a sus servidores en nube, garantizando que sólo los usuarios autorizados puedan acceder. En este artículo, exploraremos qué son las claves SSH, cómo funcionan y cómo configurarlas en su servidor en la nube.
1. ¿Qué son las claves SSH?
Las claves SSH son claves criptográficas utilizadas para autenticar clientes en un servidor SSH. En lugar de utilizar una combinación de nombre de usuario y contraseña, que puede ser vulnerable a ataques de fuerza bruta, las claves SSH proporcionan una forma más segura y automatizada de iniciar sesión en servidores remotos. Los pares de claves SSH constan de dos partes:
- Clave privada: Se guarda de forma segura en su máquina local y nunca debe compartirse.
- Clave pública: Se coloca en el servidor remoto. El servidor utiliza la clave pública para autenticar a los usuarios basándose en su clave privada.
Cuando se conecta a un servidor en la nube, el protocolo SSH comprueba que la clave pública del servidor coincide con la clave privada almacenada en su máquina. Si se verifica la coincidencia, se establece la conexión sin necesidad de contraseña.
2. ¿Por qué utilizar claves SSH para servidores en nube?
Las claves SSH ofrecen varias ventajas sobre la autenticación tradicional basada en contraseñas:
- Mayor seguridad: Las claves SSH son mucho más difíciles de descifrar que las contraseñas, ya que utilizan algoritmos criptográficos para la autenticación. Además, las claves SSH no son vulnerables a los ataques de fuerza bruta o phishing como las contraseñas.
- Comodidad: Una vez configuradas, las claves SSH permiten la autenticación sin contraseña, lo que facilita el inicio de sesión sin tener que introducir las credenciales cada vez.
- Automatización: Muchos procesos y secuencias de comandos automatizados dependen de la autenticación basada en claves SSH, lo que hace que la gestión de servidores en nube y despliegues sea más eficiente.
- Control de acceso: Las claves SSH pueden distribuirse únicamente a usuarios autorizados, lo que le permite controlar quién puede acceder a sus servidores en nube.
3. Cómo funciona la autenticación de claves SSH
He aquí una versión simplificada de cómo funciona la autenticación de claves SSH:
- El cliente (su máquina local) envía una solicitud para conectarse al servidor.
- El servidor comprueba si la clave pública del cliente coincide con alguna de las claves almacenadas en el archivo ~/.ssh/authorized_keys.
- Si se encuentra una coincidencia, el servidor envía un desafío (normalmente datos cifrados) al cliente.
- El cliente utiliza su clave privada para descifrar el desafío y enviar una respuesta al servidor.
- El servidor verifica la respuesta y, si es correcta, permite el acceso al cliente sin contraseña.
4. Cómo generar claves SSH
Para utilizar la autenticación de claves SSH, primero necesita generar un par de claves. He aquí cómo hacerlo:
En Linux o macOS:
- Abra su terminal.
- Ejecute el siguiente comando para generar un nuevo par de claves SSH:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Esto es lo que significa cada opción:
- -t rsa: Especifica el algoritmo RSA.
- -b 4096: Genera una clave de 4096 bits para mayor seguridad.
- -C “your_email@example.com”: Añade un comentario para ayudar a identificar la clave.
- Se te pedirá que elijas una ubicación para guardar la clave. Por defecto, se guarda en el directorio ~/.ssh/. Pulsa Intro para aceptar la ubicación predeterminada.
- También puedes establecer una frase de contraseña para mayor seguridad, aunque esto es opcional. Si no desea utilizar una frase de contraseña, pulse Intro para dejarla en blanco.
En Windows:
Si utiliza Windows, puede utilizar un cliente SSH como PuTTYgen o la función OpenSSH integrada en Windows 10 y versiones posteriores:
- Abra PowerShell o el símbolo del sistema.
- Ejecute el mismo comando anterior para generar el par de claves:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Tras ejecutar el comando, el proceso es el mismo que en Linux o macOS.
5. Cómo añadir su clave SSH al servidor en nube
Después de generar el par de claves SSH, necesita copiar la clave pública a su servidor en la nube para habilitar la autenticación basada en claves.
Método 1: Utilizar ssh-copy-id
En Linux o macOS, puede utilizar el comando ssh-copy-id para transferir la clave pública a su servidor:
ssh-copy-id usuario@tu-servidor-ip
Este comando te pedirá que introduzcas tu contraseña para el servidor. Una vez introducida la contraseña, copia la clave pública en el archivo ~/.ssh/authorized_keys del servidor.
Método 2: Método manual
Si estás en Windows o prefieres los pasos manuales, puedes copiar la clave pública manualmente:
- Abra el archivo de clave pública con un editor de texto:
cat ~/.ssh/id_rsa.pub
- Copie todo el contenido del archivo.
- Conéctese a su servidor utilizando una sesión SSH basada en contraseña:
ssh usuario@tu-servidor-ip
- En el servidor, cree el directorio ~/.ssh si no existe:
mkdir -p ~/.ssh
- Abra el archivo authorized_keys:
nano ~/.ssh/authorized_keys
- Pegue la clave pública copiada en el archivo y guárdelo.
- Establece los permisos correctos:
chmod 600 ~/.ssh/authorized_keys chmod 700 ~/.ssh
Esto garantiza que sólo el usuario tiene acceso de lectura y escritura a la clave y al directorio.
6. Desactivar la autenticación por contraseña (Opcional pero recomendado)
Una vez que las claves SSH están configuradas y funcionando, es muy recomendable desactivar la autenticación por contraseña en el servidor para evitar accesos no autorizados. He aquí cómo hacerlo:
- Abra el archivo de configuración SSH en su servidor en la nube:
sudo nano /etc/ssh/sshd_config
- Busque la siguiente línea y cámbiela por no:
PasswordAuthentication no
- Guarde el archivo y reinicie el servicio SSH:
sudo systemctl restart sshd
Ahora, sólo los usuarios con una clave SSH válida podrán iniciar sesión.
7. Gestión de claves SSH
- Añadir múltiples claves: Si varios usuarios necesitan acceder al servidor, puede añadir sus claves públicas al archivo authorized_keys.
- Eliminación de claves: Si desea revocar el acceso a un usuario específico, simplemente elimine su clave pública del archivo authorized_keys.
8. Conclusión
El uso de claves SSH para el acceso a servidores en la nube es una de las mejores formas de proteger su servidor y evitar las vulnerabilidades asociadas con la autenticación basada en contraseñas. Siguiendo los pasos descritos en este artículo, puedes generar claves SSH, añadirlas a tu servidor en la nube e incluso desactivar los inicios de sesión con contraseña para mejorar la seguridad.
Configurar claves SSH puede requerir un poco más de esfuerzo al principio, pero la seguridad a largo plazo y la comodidad que proporcionan hacen que merezca la pena el esfuerzo.