Sí, tengo una configuración donde puedo ssh
usar mi servidor usando la autenticación de clave pública, con un respaldo a la autenticación de dos factores con Google Authenticator + contraseña cuando mi clave privada no está disponible. Estos son los pasos que puede seguir para configurarlo.
Instalación de Google Authenticator
Mi servidor ejecuta Ubuntu Bionic Beaver (18.04.1). Puede instalar Google Authenticator usando apt
:
$ sudo apt install libpam-google-authenticator
Configurando sshd
Abra /etc/pam.d/sshd
y agregue la siguiente línea en la parte superior:
auth optional pam_google_authenticator.so
Abrir /etc/ssh/sshd_config
y cambiar una línea. La línea existente es
ChallengeResponseAuthentication no
y deberías cambiarlo a
ChallengeResponseAuthentication yes
Configuración de Google Authenticator para su cuenta
El siguiente paso es activar Google Authenticator para su cuenta. Lo haces simplemente ejecutando:
$ google-authenticator
Asegúrese de ejecutar esto como el usuario que realizará las conexiones ssh, no como root. Anote su nueva clave secreta y sus códigos de emergencia para raspar. El asistente le hará varias preguntas para configurar los ajustes de seguridad de su cuenta.
Configurando su aplicación móvil
Yo uso la aplicación Google Authenticator para iPhone. Esta aplicación tiene un botón [+] que me permite agregar un nuevo token basado en tiempo usando la clave secreta que obtuve del google-authenticator
comando en mi servidor. Fue trivial de configurar. No puedo ayudarte con aplicaciones en ninguna otra plataforma, pero imagino que el proceso es igualmente simple.
Tirando del gatillo
Lo último que debe hacer es reiniciar sshd
.
$ sudo /etc/init.d/ssh restart
En este punto, cuando intentas conectarte al servidor cuando tu clave privada está disponible, la autenticación simplemente funciona. Cuando su clave privada no esté disponible, recibirá un mensaje para un código de verificación y luego la contraseña de su cuenta.
Bingo, autenticación de dos factores.