Ich möchte von jedem Benutzer verlangen, MFA mit Google Authenticator zu verwenden. Jedes Mal, wenn ich einen neuen Benutzer hinzufüge, möchte ich ihm erlauben, sich nur einmal mit seinem SSH-Schlüssel anzumelden, und ihn bei der Anmeldung auffordern, einen geheimen Schlüssel zu erstellen, indem er das GAuth-Setup in seinem ausführt . Dadurch wird in seinem Home-Verzeichnis .bash_login
erstellt . Ich bin gefolgt von~/.google_authenticator
diese Anweisungensshd_config
(Strg+F „Eine andere Methode, um die Erstellung zu erzwingen“), um meine und einzurichten pam.d
. Hier sind sie, ohne Kommentare:
/etc/ssh/sshd_config
X11Forwarding yes
PrintMotd no
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
AllowUsers me him
PermitRootLogin no
MaxStartups 15
UsePAM yes
ChallengeResponseAuthentication yes
PasswordAuthentication no
AuthenticationMethods publickey,keyboard-interactive
/etc/pam.d/sshd
# Standard Un*x authentication.
#@include common-auth
account required pam_nologin.so
# Standard Un*x authorization.
@include common-account
session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so close
session required pam_loginuid.so
session optional pam_keyinit.so force revoke
@include common-session
session optional pam_motd.so motd=/run/motd.dynamic
session optional pam_motd.so noupdate
session optional pam_mail.so standard noenv # [1]
session required pam_limits.so
session required pam_env.so # [1]
session required pam_env.so user_readenv=1 envfile=/etc/default/locale
session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open
# Standard Un*x password updating.
@include common-password
auth required pam_google_authenticator.so nullok
So wie ich es verstehe, bedeutet das „nullok“ in der letzten Zeile, dass, wenn kein geheimer Schlüssel eingerichtet wurde, nichts erforderlich ist, um diese Authentifizierungsanforderung zu erfüllen. Wenn ich jedoch versuche, mich mit einem Benutzer anzumelden, der keinen geheimen Schlüssel konfiguriert hat, erhalte ich etwa Folgendes:
$ ssh him@my_device
[email protected]: Permission denied (keyboard-interactive).
Sobald die .google_authenticator
Datei erstellt ist, sollte die Anmeldung problemlos ablaufen. Wie erlaube ich diese Art der Anmeldung, solange .google_authenticator
nicht vorhanden ist?
Dies ist übrigens Ubuntu 18.04 LTS.
Antwort1
Mir ist ein Update der README-Datei des Projekts aufgefallen, das Informationen zu dieser nullok
Option hinzufügt.
PAM requires at least one `SUCCESS` answer from a module, and `nullok`
causes this module to say `IGNORE`. This means that if this option is
used at least one other module must have said `SUCCESS`. One way to do
this is to add `auth required pam_permit.so` to the end of the PAM
config.