Ubuntu
SSH 上的 Google Authenticator PAM 在沒有 2FA 的情況下阻止 root 登錄
情況:
我已經為 Ubuntu 16.04 上的 SSH 登錄啟動了 Google Authenticator 2FA,但在 /etc/pam.d/sshd 中將其設為可選:
auth required pam_google_authenticator.so nullok
我已經為可以從 Internet 登錄的帳戶設置了 2FA,但沒有為限制從同一子網訪問的帳戶設置 2FA,因為正在執行的 cronjobs 必須將內容從伺服器傳輸到伺服器。
這對於除root帳戶之外的每個帳戶都非常有效,因為生產伺服器和備用伺服器必須交換 SSL 密鑰,所以它當然僅限於一個 IP 地址。
案例 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
您的幫助將不勝感激。
這是預期的行為。假設你有
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
該選項之間存在差異yes
。你剛剛觀察到了。使用yes
,您可以使用密碼或 PAMwithout-password
登錄,使用這些方法您無法登錄。您仍然可以使案例如公鑰登錄。更改
PermitRootLogin
為yes
可以解決您的問題,但請考慮所有這些令人頭疼的問題是有原因的。除非你真的知道自己在做什麼,PermitRootLogin
否則應該設置為no
. 如果您需要遠端執行 root 操作,請以具有sudo
權限的使用者身份登錄。