需要有关 ubuntu 上的 google 身份验证器的帮助

需要有关 ubuntu 上的 google 身份验证器的帮助

我有 Ubuntu 20.04.3 LTS,其中我已经成功安装了 Google 身份验证器以进行 MFA 身份验证,现在我需要有关身份验证步骤的帮助,我的目标是:

  1. 如果用户没有 ssh-key,那么在 SSH 连接时,用户必须先输入密码,然后输入 Google 验证密钥才能获得系统访问权限。

  2. 如果用户有 ssh-key,则无需输入密码,但需要输入 Google 验证密钥。

这可能吗?如果可以,我需要设置什么类型的设置/etc/ssh/sshd_config/etc/pam.d/sshd

这是我现有的/etc/pam.d/sshd配置

# Standard Un*x password updating.
@include common-password

# Standard Un*x authentication.
@include common-auth

# Standard Un*x authentication.
auth required pam_google_authenticator.so nullok user=root secret=/root/totp/${USER}
auth required pam_permit.so

这是/etc/ssh/sshd_config文件

ChallengeResponseAuthentication yes
UsePAM yes
PubkeyAuthentication yes
AuthorizedKeysFile     .ssh/authorized_keys
PermitRootLogin yes
PasswordAuthentication no
AuthenticationMethods publickey,keyboard-interactive

答案1

假设您已正确安装所有内容,即安装了:

sudo apt-get install libpam-google-authenticator

并获得了一个代码

google-authenticator

您的主文件夹中有一个代码

ls /home/$USER/.google_authenticator

然后你应该将以下两行添加到你的 /etc/pam.d/sshd

...

# Standard Un*x password updating.
@include common-password
auth required pam_google_authenticator.so
auth required pam_permit.so

...

或者如果你希望 MFA 对某些用户是可选的

...

# Standard Un*x password updating.
@include common-password
auth required pam_google_authenticator.so nullok
auth required pam_permit.so

...

在您的 /etc/ssh/sshd_config 文件中更改:

ChallengeResponseAuthentication yes

然后:

sudo systemctl restart sshd.service

测试时不要终止 ssh 连接重新开始,如果配置错误,你可能会被锁定

答案2

KbdInteractiveAuthentication/etc/ssh/sshd_config也很重要,使用
ubuntu 22.04 进行测试

# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
#   KbdInteractiveAuthentication no
KbdInteractiveAuthentication yes

相关内容