Clave pública -o- Contraseña y Autenticador de Google para inicio de sesión SSH

Clave pública -o- Contraseña y Autenticador de Google para inicio de sesión SSH

Encontré un artículo (http://www.howtogeek.com/121650/how-to-secure-ssh-with-google-authenticators-two-factor-authentication/) que explica cómo configurar OpenSSH para solicitar un código de Google Authenticator tras un inicio de sesión exitoso.

¿Es posible configurar OpenSSH para que suceda lo siguiente?

  • Si el usuario tiene la clave privada correcta para iniciar sesión en el servidor, inicie sesión.
  • Si el usuario no tiene una clave privada permitida para iniciar sesión en el servidor, solicítele la contraseña de la cuenta Y un código de Google Authenticator.

Esto sería conveniente (ya que en mis computadoras solo necesitaría la clave privada) y seguro (ya que podría dejar la autenticación de contraseña habilitada y segura).

¿Hay alguna manera de lograr lo que quiero?

Gracias de antemano. :)

Respuesta1

Definitivamente es posible configurar un sshdrequisitocualquieraun par de claves válidoouse HOTP (nueva contraseña de un solo uso (OTP) en cada solicitud) Autenticación basada en OATH: lo estoy haciendo. Estoy bastante seguro de que Google Authenticator es sólo otra implementación de OATH.

Mi artículo completo se puede leer enhttp://www.teaparty.net/technotes/yubikey-oath.html, pero el resultado es:

Suponiendo que sshdya está configurado para permitir la autenticación basada en clave pública (la mayoría lo está), agregue estas dos líneas a sshd_config:

PasswordAuthentication no
ChallengeResponseAuthentication yes 

Instalar pam_auth(esta es la forma orientada a CentOS, para x86_64):

yum install pam_oath
ln -s /usr/lib64/security/pam_oath.so /lib64/security/

Cree el archivo de autenticación /etc/users.oath, modo 600, propietario root:rooty rellénelo con líneas como:

#type   username        pin     start seed
HOTP    fred            -       123a567890123b567890123c567890123d567890

Editar /etc/pam.d/sshdy agregar la línea

auth required pam_oath.so usersfile=/etc/users.oath window=5 digits=8 

Omita el digits=8si está satisfecho con el juramento HOTP de 6 dígitos. Creo que se puede utilizar un método similar para TOTP OATH (nueva OTP cadanortesegundos), pero estoy usando tokens OATH de hardware en lugar de tokens de software, y son yubikeys, que solo hacen HOTP OATH.

El único inconveniente es que cuando ingresa sin presentar una clave válida, le solicita el código OATH.antesla contraseña. No podía hacer que funcionara al revés, pero decidí que no me importaba demasiado; las indicaciones dejan bastante claro qué token se solicita.

Respuesta2

Necesitas agregar:

AuthenticationMethods publickey keyboard-interactive

sin coma entre publickeyy keyboard-interactiveto /etc/ssh/sshd_config. No es necesario modificar todas las demás configuraciones (siempre que la configuración sea igual al tutorial de howtogeek proporcionado).

información relacionada