使用 Google 身份验证在 ssh 服务器上进行双因素身份验证

使用 Google 身份验证在 ssh 服务器上进行双因素身份验证

我遵循了几个不同的指南,了解如何使用 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在您喜欢的任何服务中。

相关内容