MFA가 설정된 경우에만 MFA를 요구하려면 어떻게 해야 합니까?

MFA가 설정된 경우에만 MFA를 요구하려면 어떻게 해야 합니까?

모든 사용자에게 Google Authenticator와 함께 MFA를 사용하도록 요구하고 싶습니다. 새 사용자를 추가할 때마다 해당 사용자가 SSH 키를 사용하여 한 번만 로그인하도록 허용하고 로그인 시 .bash_login. ~/.google_authenticator홈 디렉토리에 생성됩니다 . 나는 팔로우했다이 지침(Ctrl+F "강제 생성을 위한 또 다른 방법") my sshd_configpam.d. 주석이 제거된 내용은 다음과 같습니다.

/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

내가 이해한 바로는 마지막 줄의 "nullok"은 비밀 키가 설정되지 않은 경우 해당 인증 요구 사항을 충족하는 데 아무 것도 필요하지 않음을 의미합니다. 하지만 비밀 키가 구성되지 않은 사용자로 로그인하려고 하면 다음과 같은 결과가 나타납니다.

$ ssh him@my_device
[email protected]: Permission denied (keyboard-interactive).

.google_authenticator파일이 생성 되면 로그인이 정상적으로 진행됩니다. .google_authenticator존재하지 않는 한 이러한 종류의 로그인을 어떻게 허용합니까 ?

그건 그렇고, 이것은 Ubuntu 18.04 LTS입니다.

답변1

옵션 에 대한 정보를 추가하는 프로젝트의 README 업데이트를 확인했습니다 nullok.

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.

에서: https://github.com/google/google-authenticator-libpam/commit/5e804ec11104a1ab17ce02d0681130ded037f39b

관련 정보