Autenticacion 2FA por SSH en tu Raspberry Pi

Jose l. Azagra
3 min readMar 21, 2021

En este tutorial, vamos habilitar la autenticación de 2 factores, o 2FA en nuestra RasPi, así cada vez que nos conectemos por SSH a ella, nos pedirá la contraseña que tengamos definida y ademas un código temporal para poder acceder.

Lo primero, necesitamos una RasPi (también es valido para usarlo en tu equipo con Linux), con Raspbian instalado y actualizado.
Si no estamos seguro de que este debidamente actualizada lo realizaremos así:

sudo apt update && sudo apt upgrade -y

Una vez actualizada debemos instalar unos paquetes.

sudo apt install -y libpam-google-authenticator libpam-oath

Ya con todos los paquetes instalados y sus dependencias, habilitaremos el modulo PAM en el servicio SSH, para ello editamos el fichero

sudo vim /etc/pam.d/sshd

Y le añadimos esta linea al fichero

# Set access login by Google
auth required pam_google_authenticator.so

Ahora nos vamos al otro fichero y editamos una linea, por defecto la función ChallengeResponseAuthentication, esta establecida a no, simplemente cambiamos a yes y guardamos.

sudo vim /etc/ssh/sshd_config

Reiniciamos el servicio SSH

sudo systemctl restart sshd.service

Podemos ver que el servicio esta corriendo con

pi@raspberrypi:~ $ sudo systemctl status sshd.service
● ssh.service — OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2021–03–21 04:09:27 CET; 12h ago
Docs: man:sshd(8)
man:sshd_config(5)
Process: 5916 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
Main PID: 5917 (sshd)
Tasks: 1 (limit: 2181)
CGroup: /system.slice/ssh.service
└─5917 /usr/sbin/sshd -D

Empezamos con la configuración.
Lanzamos el asistente (por consola) para configurar el código temporal 2FA.

Ejecutamos en el terminal

google-authenticator

Nos aparecerá un código QR enorme, le debemos escanear, pero antes debemos responder a las preguntas que nos solicita y unos números debajo, los números los guardamos.

  • Make tokens “time-base”: yes
  • Update the .google_authenticator file: yes
  • Disallow multiple uses: yes
  • Increase the original generation time limit: no
  • Enable rate-limiting: yes

Si no tienes la App “Google Authenticator” instalada en el móvil, buscala en tu App Store o Google Play.

Con la App ya instalada, la abrimos y pulsa el símbolo +, y Escanea un código QR, como veras aparece un código QR enorme en el terminal, tienes que escanearlo con la App.

Y listo! Ya podrás iniciar sesión por SSH con 2FA, primeramente nos solicitara la contraseña que tengamos, y luego el código temporal

--

--