Publicado en

Autenticación con clave SSH en Linux y deshabilitar login por contraseña

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

  1. 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.
  2. 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.
  3. 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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *