全部產品
Search
文件中心

:如何處理因PAM配置錯誤導致的Linux執行個體登入失敗

更新時間:Nov 12, 2025

問題現象

啟用或修改Linux系統的PAM(Pluggable Authentication Modules)模組配置後,在系統日誌/var/log/secure中,出現以下任一錯誤會導致無法登入:

  • requirement "uid >= 1000" not met by user "xxxx"

  • user xxxx (0) has 5 failed attempts, failed attempts threshold is 3

  • Refused user xxxx for service sshd

解決方案

重要

請確保至少有一個管理員賬戶(root使用者或其他擁有sudo許可權的普通使用者)可以登入執行個體,否則無法修改設定檔。

問題定位

  1. 使用管理員賬戶通過VNC串連登入ECS執行個體。

    1. 訪問ECS控制台-執行個體。在頁面左側頂部,選擇目標資源所在的資源群組和地區。

    2. 進入目標執行個體詳情頁,單擊遠端連線,選擇通過VNC遠端連線。輸入帳號和密碼,登入ECS執行個體。

  2. 檢查認證日誌,定位嚴重錯誤資訊。

    • 賬戶因失敗嘗試被鎖定:若日誌包含Maximum amount of failed attempts was reached,說明配置了連續密碼錯誤後鎖定使用者賬戶,需解除賬戶鎖定

      sudo grep -i "Maximum amount of failed attempts" /var/log/secure
    • 使用者登入許可權被限制:若日誌包含requirement "uid >= 1000" not met by user ,說明配置了禁止UID小於1000的使用者登入,需解除UID限制

      sudo grep -i "not met by user" /var/log/secure
    • 使用者被列入黑名單:若日誌包含Refused user,說明配置了黑白名單檔案控制使用者訪問,目標使用者可能被顯式拒絕或未被列入白名單,需解除使用者黑白名單限制

      sudo grep -i "Refused user" /var/log/secure

解除賬戶鎖定

  1. 檢查使用者的失敗登入次數。

    將<username>替換為登入失敗的使用者名稱。

    sudo sudo pam_tally2 -u <username>

    若輸出的失敗次數大於0,則表示賬戶被鎖定。

  2. 解鎖賬戶。

    sudo pam_tally2 -u <username> -r
  3. 永久修複(可選)。

    如需禁用鎖定策略,可編輯/etc/pam.d/system-auth檔案,注釋包含pam_tally2.so 的規則。

    sudo vim /etc/pam.d/system-auth

    如下配置,表示普通使用者和root使用者連續三次輸入錯誤密碼會被鎖定,50秒後解鎖。

    auth required pam_tally2.so deny=3 unlock_time=50  
    上述使用的是pam_tally2模組,不同的PAM版本,設定模組有所不同,請參見Linux PAM SAG
  4. 重新登入執行個體,驗證登入是否正常。

解除UID限制

  1. 定位設定檔。

    尋找包含pam_succeed_if的設定檔,如/etc/pam.d/sshd/etc/pam.d/login/etc/pam.d/system-auth

    sudo grep -r "pam_succeed_if" /etc/pam.d/
  2. 檢查並修改配置。

    sudo vim /etc/pam.d/sshd

    對每個包含auth required pam_succeed_if.so uid >= 1000的檔案,在其前面添加 # 號注釋對應行。

    # auth required pam_succeed_if.so uid >= 1000
  3. 重新登入執行個體,驗證登入是否正常。

解除使用者黑白名單限制

  1. 定位設定檔。

    尋找包含pam_listfile的設定檔,如/etc/pam.d/sshd/etc/pam.d/login/etc/pam.d/system-auth

    sudo grep -r "pam_listfile" /etc/pam.d/
  2. 檢查配置。

    sudo vim /etc/pam.d/sshd

    查看匹配的配置行,確認是白名單 (sense=allow) 還是黑名單 (sense=deny),並找到名單檔案路徑(如/etc/ssh/whitelist/etc/ssh/blacklist)。

    # 設定了訪問白名單,僅允許白名單使用者允許登入
    auth required pam_listfile.so item=user sense=allow file=/etc/ssh/whitelist onerr=fail
    
    # 設定了訪問黑名單,禁止黑名單使用者登入
    auth required pam_listfile.so item=user sense=deny  file=/etc/ssh/blacklist onerr=fail
  3. 根據配置類型修改設定檔。

    • 白名單:在檔案末尾添加使用者名稱,每行一個使用者,儲存退出。

      sudo vim /etc/ssh/whitelist
    • 黑名單:刪除包含目標使用者名稱的行,儲存退出。

      sudo vim /etc/ssh/blacklist
  4. 重新登入執行個體,驗證登入是否正常。