我遵循了几个不同的指南,了解如何使用 google 的 libpam-google-authenticator 在我的 ssh 服务器上配置双因素身份验证。我已经能够让它工作,但是当我尝试通过 ssh 从我的桌面或任何其他设备登录时,我必须给它我的 ssh-key、用户密码,然后是身份验证器令牌。但在我的 sshd_config 文件中我有:
AuthenticationMethods publickey,keyboard-interactive
ChallengeResponseAuthentication yes
PasswordAuthentication no
UsePAM yes
在我的/etc/pam.d/sshd
我补充说
auth required pam_google_authenticator.so
所以我认为它也不应该要求输入密码。我该如何解决这个问题?
答案1
@include common-auth
从您的 中注释掉该行/etc/pam.d/sshd
。它将仅要求第二个因素(如果已配置!)。
答案2
基本上@Jakuje 是对的。
common-auth 包含一行 pam_unix.so。我会创建一个新文件 /etc/pam.d/google_auth,并将其包含在 /etc/pam.d/sshd 中,而不是 common-auth。这样你就更加模块化了。
google-auth 基本上看起来像这样:
# here are the per-package modules (the "Primary" block)
auth [success=1 default=ignore] pam_google_authenticator.so
# here's the fallback if no module succeeds
auth requisite pam_deny.so
# prime the stack with a positive return value if there isn't one
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
auth required pam_permit.so
# and here are more per-package modules (the "Additional" block)
auth optional pam_cap.so
# end of pam-auth-update config
这样,您就可以将其包含google-auth
在您喜欢的任何服务中。