我有 Ubuntu 20.04.3 LTS,其中我已经成功安装了 Google 身份验证器以进行 MFA 身份验证,现在我需要有关身份验证步骤的帮助,我的目标是:
如果用户没有 ssh-key,那么在 SSH 连接时,用户必须先输入密码,然后输入 Google 验证密钥才能获得系统访问权限。
如果用户有 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