全部產品
Search
文件中心

:如何解決SSH登入Linux執行個體時的“Permission denied,please try again”錯誤?

更新時間:Oct 25, 2025

問題現象

通過SSH遠端連線Linux執行個體時,即使輸入正確的使用者名稱和密碼,串連請求仍被服務端拒絕,返回Permission denied, please try again

問題診斷

  1. 通過VNC串連登入ECS執行個體。

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

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

  2. 檢查SSH服務配置。

    若配置中的PermitRootLoginPasswordAuthentication參數被設定為no,請參考情境一:SSH配置禁止登入進行修複。

    • PermitRootLogin:若設定為no,則禁止root使用者通過SSH登入。

    • PasswordAuthentication:若設定為no,則禁止所有使用者使用密碼方式登入。

    sudo cat /etc/ssh/sshd_config
  3. 檢查系統安全日誌。

    SELinux策略阻止登入時,會在系統安全日誌中記錄錯誤資訊。

    SELinux策略是一套強制存取控制規則,它定義了系統中每個進程允許對哪些檔案、連接埠或其他資源執行哪些具體操作。
    # 對於CentOS/RHEL系統
    sudo grep -iE --color=auto 'Could not get shadow information' /var/log/secure
    
    # 對於Debian/Ubuntu系統
    sudo grep -iE --color=auto 'Could not get shadow information' /var/log/auth.log

    若無返回資訊,則表明問題可能由SELinux策略引起,請參考情境二:SELinux策略阻止登入進行修複。

問題修複

情境一:SSH配置禁止登入

  1. 修改配置

    sudo vi /etc/ssh/sshd_config

    根據業務需求調整參數:

    • 允許密碼認證:將PasswordAuthentication no修改為PasswordAuthentication yes

    • 允許root使用者登入:

      • 允許密鑰認證(推薦):若計劃使用密鑰登入root帳號,可設定為PermitRootLogin prohibit-password

      • 允許密碼認證:將PermitRootLogin no修改為PermitRootLogin yes

        重要

        修改SSH配置以允許root使用者通過密碼登入(PermitRootLogin yes)會使執行個體面臨更高的暴力破解攻擊風險。建議優先考慮使用密鑰認證或限制IP訪問來源

    修改完成後,按Esc鍵,輸入:wq儲存並退出文字編輯器。

  2. 檢查配置並重啟服務

    1. 檢查設定檔文法是否正確。若未返回任何錯誤,表示文法正確。

      sudo sshd -t
    2. 重載服務使配置生效。

      sudo systemctl restart sshd
  3. 驗證串連

    再次通過SSH遠端連線執行個體,驗證是否可以串連成功。

情境二:SELinux策略阻止登入

  1. 檢查SELinux目前狀態

    確認SELinux是否處於enforcing(強制)模式。

    sudo sestatus

    若回執資訊中的SELinux statusenabledCurrent modeenforcing,則表明SELinux策略正在生效。

  2. 臨時調整SELinux模式以恢複訪問

    將SELinux臨時切換到permissive(寬容)模式,SELinux只記錄警告而不強制阻止操作。

    sudo setenforce 0
    重要

    該命令僅臨時調整狀態,重啟失效。

    執行後,通過SSH重新登入。如果登入成功,則證明問題由SELinux引起。

  3. 永久修改SELinux配置(可選)

    1. 修改設定檔:將SELinux的預設模式從enforcing修改為permissive

      sudo sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
    2. 重啟執行個體:使設定檔修改生效。

  4. 驗證串連

    再次通過SSH遠端連線執行個體,驗證是否可以串連成功。