Implementación de la autenticación de dos factores (2FA) con SSH en un servidor Debian 11
11:22, 28.07.2026
Para mejorar el nivel de seguridad de tu servidor Debian 11, se recomienda encarecidamente utilizar la autenticación de dos factores. Si deseas implementar la autenticación de dos factores (2FA), en esta guía encontrarás información detallada sobre el proceso de configuración.
Qué es la autenticación de dos factores
Para acceder al servidor Debian, normalmente los usuarios solo tienen que introducir la contraseña o la clave SSH. La autenticación de dos factores hace que el inicio de sesión sea más seguro, ya que requiere dos datos distintos para acceder al sistema. Además de una contraseña estándar, los usuarios deben introducir una contraseña de un solo uso para iniciar sesión en el servidor Debian. Esta contraseña temporal se genera mediante el algoritmo TOTP. Hoy en día, muchas plataformas tienen en cuenta el uso de la autenticación de dos factores por motivos de seguridad, y es una excelente idea que puede proteger significativamente tu servidor frente a intentos no autorizados de acceso.
En esta guía, compartiremos nuestras recomendaciones prácticas sobre el proceso de configuración de la autenticación de dos factores (2FA) para que comprendas claramente en qué consisten la autenticación por clave pública y la autenticación por contraseña. El software que se utilizará para la 2FA es de código abierto y se llama «libpam authenticator».
Paso 1: Configuración de Google Authenticator en un servidor Debian
Para instalar el autenticador desde el repositorio predeterminado, debes utilizar la siguiente línea de comandos:
sudo apt install -y libpam-google-authenticator
Para crear la clave, utiliza el siguiente comando:
google-authenticator
Una vez hecho esto, se te preguntará si los tokens de autenticación deben basarse en el tiempo y aquí debes especificar «Y». A continuación, obtendrás un código QR que deberás escanear con la aplicación TOTP de tu teléfono. Aquí tienes dos productos que vale la pena utilizar:
- Aplicación móvil Google Authenticator, que no es de código abierto. Si no quieres utilizar productos de Google, puedes optar por los de Red Hat y probar FreeOTP.
- Google Authenticator se puede instalar fácilmente desde la App Store o Google Play en tu dispositivo.
No olvides ampliar la ventana para escanear el código QR completo con la autenticación elegida en tu dispositivo. Una vez completado este proceso, recibirás una contraseña de 6 dígitos en tu dispositivo móvil y, según la configuración predeterminada, esta contraseña cambiará cada 30 segundos. Introdúcela para confirmar tu acceso.
En la ventana de la terminal, verás la información sobre el código de verificación, la clave secreta y el código de seguridad. Es muy recomendable que guardes estos datos en un lugar seguro para futuras necesidades.
A continuación, aparecerán un par de preguntas debajo de esta información a las que debes responder «Y» (Sí). Al hacerlo, aumentas el intervalo de tiempo, actualizas el archivo de configuración del Authenticator, activas los límites de frecuencia para una mayor protección y desactivas el acceso de múltiples usuarios.
Paso 2: Habilitar Google Authenticator para el acceso SSH
Uso de la autenticación por contraseña con 2FA
Para aquellos que tengan previsto utilizar la autenticación por contraseña con 2FA. A continuación se ofrece una breve guía sobre todo el proceso; comience abriendo el archivo de configuración con:
sudo nano /etc/ssh/sshd_config
Una vez en el archivo, busque parámetros como ChallengeResponseAut. y UseRAM, y establezca ambos en «yes».
PAM es un módulo de autenticación específico que permite integrar fácilmente diversos métodos de autenticación en tu sistema Debian. Para que la autenticación mediante SSH funcione correctamente, ambos parámetros deben estar habilitados.
Otro parámetro importante que debe establecerse en «Yes» es «PermitRootLogin». Para permitir el proceso de autenticación de dos factores, su valor no debe ser «prohibited-PW» ni «no», así que comprueba que todo esté correctamente indicado en el archivo de configuración.
Tras guardar el archivo con todos los cambios realizados, debes seguir estos pasos importantes:
sudo nano /etc/pam.d/sshd
Una vez en el archivo, busca la línea con «ChallengeResponseAuth.» y cambia también su valor a «Yes». Este parámetro habilita un proceso de autenticación mediante contraseña adecuado.
@include common-auth
Además, no olvides añadir la siguiente información:
auth required pam_google_authenticator.so
Guarda el archivo con los cambios realizados y reinicia SSH utilizando la siguiente línea:
sudo systemctl restart ssh
Una vez que hayas seguido todas las instrucciones mencionadas anteriormente, se te pedirá el código de verificación, así como tu contraseña, al iniciar sesión en el sistema. El código de verificación es un dato generado de un solo uso que recibirás en tu dispositivo móvil. Una recomendación más que debes tener en cuenta: no cierres la sesión actual. Para probar el proceso, debes abrir otra ventana y, en caso de que surja algún problema, la sesión SSH inicial será crucial para solucionarlo.
Combinación de la autenticación por clave pública con la autenticación de dos factores (2FA)
Para combinar la autenticación por clave pública con la autenticación de dos factores (2FA), aquí tienes un proceso directo que debes seguir. Empieza abriendo el archivo de configuración:
sudo nano /etc/ssh/sshd_config
Una vez en el archivo, tendrás que buscar dos parámetros y establecerlos en «Yes». Busca «ChallengeResponseAuthen.» y «UsePAM» y, una vez encontrados, cambia su valor al necesario.
PAM hace referencia a un módulo de autenticación específico necesario para integrar fácilmente diversos métodos de autenticación en el sistema Debian. Para activar Google Authenticator, ambos parámetros deben estar habilitados.
En caso de que también necesites que el usuario root pueda acceder a la autenticación de dos factores, busca además un parámetro adicional llamado «PermitRootLogin». Una vez localizado, debes cambiar su valor a «Y» (Sí); cualquier otro valor no es adecuado en esta variante.
Una vez completados todos los pasos mencionados anteriormente, debes añadir una línea más al archivo:
AuthenticationMethods publickey,keyboard-interactive
Cierra el archivo con todos los cambios guardados. El siguiente paso consistirá en editar las reglas de PAM:
sudo nano /etc/pam.d/sshd
En el archivo, deberías encontrar el siguiente parámetro: ChallengeResponseAuthen con el valor «Yes». El siguiente paso consistirá en comentar esta parte, ya que vas a utilizar la clave SSH.
@include common-auth
Para habilitar el proceso, la siguiente línea es de vital importancia:
auth required pam_google_authenticator.so
Una vez realizados todos los cambios, guarda el archivo y reinicia el sistema con el comando:
sudo systemctl restart ssh
Ahora, cuando todo esté correctamente configurado en tu servidor Debian, podrás utilizar procesos de inicio de sesión seguros en los que deberás introducir tanto el código de verificación como la clave SSH. Un último recordatorio: no cierres la sesión actual. Abre otra ventana de terminal y comprueba si todo funciona como es debido; en caso de que surja algún problema, podrás recurrir a esta sesión inicial.
Consideraciones importantes
- Los usuarios de los servidores Debian deben escanear sin falta el código QR y ejecutar los comandos del autenticador para configurar todo correctamente. De lo contrario, se producirán problemas relacionados con la denegación de permisos.
- No olvides guardar tu código de seguridad. En caso de emergencia, si por cualquier motivo no puedes acceder a tu dispositivo móvil, puedes utilizar uno de los 5 códigos de seguridad disponibles para completar el proceso de verificación. Cada código solo se puede utilizar una vez, así que tenlo en cuenta.
- Para cambiar la clave secreta, solo tienes que ejecutar google-authenticator el comando y actualizar este archivo.
- Para que el proceso de autenticación se desarrolle sin problemas, también debes configurar las zonas horarias. La contraseña de un solo uso se genera a partir de la hora actual, por lo que es recomendable activar la sincronización entre el servidor Debian y tu dispositivo móvil.
Desactivación de la autenticación de dos factores de SSH
Para iniciar el proceso de desactivación, debes utilizar:
sudo nano /etc/pam.d/sshd
El siguiente paso es comentar la línea:
auth required pam_google_authenticator.so
En caso de que hayas añadido la línea con AuthenticationMethods, debes eliminar keyboard-interactive parte. A continuación, añada en su lugar publickey y guarde los cambios. El último paso consistirá en reiniciar el sistema con:
sudo systemctl restart ssh
Resumen final
Esperamos que esta información te haya resultado útil y que ahora tengas una idea clara de cómo funcionan todos los procesos y de cómo configurarlo todo correctamente. En caso de que surjan algunos problemas, también hemos comentado un par de recomendaciones para solucionar los problemas de autenticación.