# Implementación de Autenticación en Dos Pasos (2FA) en Linux con Google Authenticator

- Link: https://binariocero.com/linux/implementacion-de-autenticacion-en-dos-pasos-2fa-en-linux-con-google-authenticator
- Published: 2025-08-15T09:04:40+02:00
- Author: Juan José Fernández Durán

![Loading](https://binariocero.com/wp-content/plugins/page-views-count/ajax-loader-
2x.gif)

La autenticación en dos pasos (2FA) añade una capa extra de seguridad al proceso
de inicio de sesión, reduciendo el riesgo de accesos no autorizados incluso si la
contraseña es comprometida. En este artículo se detalla cómo implementar 2FA en 
un sistema Linux para acceso SSH utilizando **Google Authenticator**.

## 1. Instalación de Google Authenticator

En sistemas basados en **Debian/Ubuntu**, el paquete necesario se instala desde 
los repositorios oficiales.
Primero, actualizamos la lista de paquetes:

    ```wp-block-code
    sudo apt update
    ```

Después, instalamos el módulo PAM de Google Authenticator:

    ```wp-block-code
    sudo apt install libpam-google-authenticator
    ```

Este módulo se integrará con el sistema de autenticación de Linux para requerir 
un código temporal adicional al iniciar sesión.

## 2. Configuración del usuario para 2FA

Cada usuario que requiera 2FA debe ejecutar el comando:

    ```wp-block-code
    google-authenticator
    ```

Durante este proceso, se generará un código QR que deberá escanearse con la aplicación**
Google Authenticator** o cualquier otra app compatible (Authy, Microsoft Authenticator,
etc.).

El asistente preguntará:

 * Si quiere que los tokens sean basados en tiempo (TOTP). **Recomendado: Sí**.
 * Si quiere actualizar el archivo de configuración (`~/.google_authenticator`).
 * Si quiere limitar el uso de un mismo código a una vez.
 * El tiempo de tolerancia para evitar problemas de sincronización.

## 3. Edición de la configuración de SSH

Para que SSH requiera el código 2FA, es necesario modificar el archivo PAM y la 
configuración del demonio SSH.

### Editar el archivo PAM

Abrir el archivo PAM de SSH:

    ```wp-block-code
    sudo nano /etc/pam.d/sshd
    ```

Añadir la siguiente línea al final (o asegurarse de que esté activa):

    ```wp-block-code
    auth required pam_google_authenticator.so
    ```

### Habilitar ChallengeResponseAuthentication

En el archivo de configuración de SSH:

    ```wp-block-code
    sudo nano /etc/ssh/sshd_config
    ```

Asegurarse de que las siguientes líneas estén configuradas:

    ```wp-block-code
    ChallengeResponseAuthentication yes
    PasswordAuthentication yes
    UsePAM yes
    ```

> Si se usa autenticación con clave pública **más** 2FA, se debe ajustar `AuthenticationMethods`:

    ```wp-block-code
    AuthenticationMethods publickey,keyboard-interactive
    ```

## 4. Reinicio del servicio SSH

Aplicar los cambios reiniciando el servicio:

    ```wp-block-code
    sudo systemctl restart ssh
    ```

## 5. Prueba de autenticación

Para verificar el correcto funcionamiento, iniciar sesión por SSH:

    ```wp-block-code
    ssh usuario@servidor
    ```

El sistema pedirá primero la contraseña (o validará la clave pública) y luego solicitará
el código de verificación temporal que se muestra en Google Authenticator.

## Beneficios de esta configuración

 * **Mayor seguridad**: incluso si una contraseña es filtrada, el atacante necesitará
   el código temporal.
 * **Implementación rápida**: se configura en minutos.
 * **Compatibilidad**: funciona con cualquier app TOTP.
