SSH 上的 Google Authenticator PAM 阻止没有 2FA 的 root 登录

SSH 上的 Google Authenticator PAM 阻止没有 2FA 的 root 登录

情况:

我已经在 Ubuntu 16.04 上为 SSH 登录激活了 Google Authenticator 2FA,但在 /etc/pam.d/sshd 中将其设为可选项:

auth required pam_google_authenticator.so nullok

我已经为可以从互联网登录的帐户设置了 2FA,但没有为被限制从同一子网访问的帐户设置 2FA,因为正在运行的 cronjobs 必须将内容从一台服务器传输到另一台服务器。

这对每个帐户都非常有用,除了当然,它仅限于一个 IP 地址,因为生产服务器和备用服务器必须交换 SSL 密钥。

情况 A:当我尝试使用带有 SSH 密钥但没有 2FA 的普通用户帐户登录时:没有问题。

情况 B:当我尝试使用 SSH 密钥以 root 身份登录但没有 2FA 时,我在 /var/log/auth.log 中收到此错误:

Aug 20 23:39:59 host01 sshd[28638]: fatal: Internal error: PAM auth succeeded when it should have failed

非常感谢您的帮助。

答案1

这是预期的行为。假设您有PermitRootLogin without-password,则手册页显示PermitRootLogin

If this option is set to prohibit-password or without-password, password and keyboard-interactive authentication are disabled for root.

PAM 被认为是键盘交互的。因此,使用PermitRootLogin without-passwordPAM 不应该允许 root 登录,这是您观察到的行为。

对于该选项,without-password和之间存在差异。您刚刚观察到了这一点。使用,您可以使用密码或 PAM 登录,而使用您无法使用这些方法登录。您仍然可以使用公钥等登录。yesyeswithout-password

更改PermitRootLogin为可以yes解决您的问题,但请考虑所有这些令人头疼的事情都是有原因的。除非您真的知道你在做什么,PermitRootLogin应该设置为no。如果你需要远程执行 root 操作,请以具有权限的用户身份登录sudo

相关内容