情况:
我已经在 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-password
PAM 不应该允许 root 登录,这是您观察到的行为。
对于该选项,without-password
和之间存在差异。您刚刚观察到了这一点。使用,您可以使用密码或 PAM 登录,而使用您无法使用这些方法登录。您仍然可以使用公钥等登录。yes
yes
without-password
更改PermitRootLogin
为可以yes
解决您的问题,但请考虑所有这些令人头疼的事情都是有原因的。除非您真的知道你在做什么,PermitRootLogin
应该设置为no
。如果你需要远程执行 root 操作,请以具有权限的用户身份登录sudo
。