La autenticación mediante clave SSH es una de las formas más seguras de acceder a servidores Linux de manera remota. Usar claves SSH en lugar de contraseñas minimiza el riesgo de ataques de fuerza bruta y aumenta significativamente la seguridad de tus sistemas. En este artículo, te enseñamos cómo configurar la autenticación SSH con clave en Debian, Fedora y CentOS, y cómo deshabilitar el login por contraseña.
¿Por qué usar clave SSH?
El uso de claves SSH es mucho más seguro que las contraseñas tradicionales, ya que las claves son mucho más difíciles de adivinar o crackear. Además, con SSH, los datos se transmiten de manera cifrada, lo que asegura que las credenciales no puedan ser interceptadas fácilmente. Al usar claves SSH y deshabilitar el login por contraseña, proteges aún más tu servidor de accesos no autorizados.
Paso 1: Generar la clave SSH
En Debian y Ubuntu
Para generar una clave SSH en tu máquina local, abre una terminal y ejecuta:
ssh-keygen -t rsa -b 4096
Presiona Enter para aceptar la ubicación predeterminada del archivo (/home/usuario/.ssh/id_rsa
) y, si lo deseas, establece una contraseña para mayor seguridad.
En Fedora y CentOS
El procedimiento es el mismo. En Fedora o CentOS, también puedes generar la clave SSH con el mismo comando:
ssh-keygen -t rsa -b 4096
Paso 2: Copiar la clave pública al servidor
Una vez que hayas generado las claves, debes copiar la clave pública a tu servidor remoto. Para hacerlo, utiliza el siguiente comando, reemplazando usuario
y ip_del_servidor
con los datos de tu servidor:
ssh-copy-id usuario@ip_del_servidor
Este comando añadirá tu clave pública al archivo ~/.ssh/authorized_keys
del servidor. Si estás utilizando una distribución que no incluye ssh-copy-id
por defecto (como CentOS), puedes copiarla manualmente utilizando:
cat ~/.ssh/id_rsa.pub | ssh usuario@ip_del_servidor 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys'
Paso 3: Configurar SSH para usar claves y deshabilitar el login por contraseña
Ahora, debes configurar el archivo de configuración de SSH para que el servidor solo permita la autenticación mediante clave SSH y deshabilitar el login por contraseña.
En Debian y Ubuntu
Edita el archivo de configuración de SSH con el siguiente comando:
sudo nano /etc/ssh/sshd_config
Busca las siguientes líneas y ajústalas según se indica:
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
Guarda los cambios y cierra el archivo.
En Fedora y CentOS
El proceso es el mismo en Fedora y CentOS. Abre el archivo de configuración SSH:
sudo nano /etc/ssh/sshd_config
Luego, realiza los mismos cambios que en Debian y Ubuntu:
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
Una vez configurado, guarda y cierra el archivo.
Paso 4: Reiniciar el servicio SSH
Después de realizar los cambios, necesitas reiniciar el servicio SSH para que la nueva configuración surta efecto. Usa el siguiente comando en todas las distribuciones:
sudo systemctl restart sshd
Paso 5: Verificación
Para verificar que la autenticación por clave SSH está funcionando correctamente, intenta conectarte al servidor utilizando SSH:
ssh usuario@ip_del_servidor
Si configuraste todo correctamente, no se te pedirá una contraseña y podrás acceder al servidor usando tu clave SSH. Si, por alguna razón, la conexión falla, asegúrate de que la clave pública esté correctamente instalada en el archivo ~/.ssh/authorized_keys
del servidor y que no haya errores en la configuración del servidor SSH.
Consideraciones adicionales
- Seguridad adicional con un passphrase: Aunque no es obligatorio, es altamente recomendable que configures un passphrase (contraseña) para tu clave privada. Esto añade una capa adicional de seguridad en caso de que tu clave privada sea comprometida.
- Respaldo de claves SSH: Asegúrate de hacer un respaldo de tu clave privada en un lugar seguro. Si pierdes la clave, no podrás acceder al servidor.
- Acceso de emergencia: Antes de deshabilitar el login por contraseña, asegúrate de tener acceso alternativo al servidor, como acceso físico o acceso a través de la consola del proveedor de hosting.
Conclusión
La autenticación con clave SSH es una medida esencial para proteger tus servidores Linux de accesos no autorizados. Siguiendo los pasos anteriores, puedes asegurarte de que solo los usuarios con claves privadas válidas puedan acceder a tu servidor, mientras que deshabilitas el login por contraseña para reforzar la seguridad. Ya sea que estés utilizando Debian, Fedora o CentOS, la configuración es similar, lo que te permite mantener tus servidores seguros y controlados.