全部產品
Search
文件中心

:如何解決使用第三方SSH用戶端登入Linux執行個體時提示“Access denied”錯誤?

更新時間:Nov 20, 2025

問題現象

  • 遠程登入失敗:使用第三方 SSH 用戶端(如 PuTTY, Xshell, SecureCRT)串連 Linux 執行個體時,用戶端提示Access deniedPermission denied, please try again.錯誤。

  • 系統安全日誌:系統日誌/var/log/secure中包含not allowed because等相關資訊。

問題原因

預設情況下,Linux 執行個體的 SSH 服務允許系統上所有使用者賬戶通過憑證(密碼或密鑰)進行登入。當SSH服務組態檔/etc/ssh/sshd_config中啟用了登入限制策略時,配置不當會導致特定使用者無法登入執行個體。

  • AllowUsers:使用者白名單,僅允許清單中的使用者登入。

  • DenyUsers:使用者黑名單,拒絕列表中的使用者登入。

  • AllowGroups:使用者組白名單,僅允許清單中的使用者組中的使用者登入。

  • DenyGroups:使用者組黑名單,拒絕列表中的使用者組中的使用者登入。

拒絕策略(Deny*)的優先順序高於允許策略(Allow*)。如果一個使用者同時滿足允許和拒絕的條件,該使用者將被拒絕登入。

解決方案

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

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

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

  2. 檢查並修改SSH設定檔。

    1. 備份設定檔,以便在修改錯誤時快速恢複。

      sudo cp /etc/ssh/sshd_config  /etc/ssh/sshd_config.bak
    2. 定位並調整存取控制策略。

      sudo vi /etc/ssh/sshd_config

      選擇以下任一方式進行修改:

      • 方式一:注釋所有限制規則

        若不需要登入限制,在AllowUsersDenyUsersAllowGroups以及DenyGroups參數行的行首添加#符號將其注釋掉,讓所有系統使用者都能登入。

        # AllowUsers userA userB
        # DenyUsers userC
      • 方式二:修正限制規則

        為確保策略的明確性,應避免同時使用白名單(Allow*)和黑名單(Deny*)規則。

        • 使用白名單策略(用於只允許少數使用者登入的情境)

          僅保留AllowUsersAllowGroups參數,將需要登入的使用者或使用者組添加到列表中,同時注釋或刪除所有Deny*參數。

           AllowUsers userA userB newUser
           # DenyUsers userC 
          以上樣本表示僅允許userAuserBnewUser三個使用者登入,其他所有使用者都無法登入。
        • 使用黑名單策略(用於只拒絕少數使用者登入的情境)

          僅保留DenyUsers或DenyGroups參數,將需要禁止登入的使用者或使用者組添加到列表中,同時注釋或刪除所有Allow*參數。

          # AllowUsers userA userB
           DenyUsers userC userD
          以上樣本表示拒絕userCuserD使用者登入,其他所有使用者都可以登入。
  3. 重啟SSH服務,使配置生效。

    sudo systemctl restart sshd.service
    若啟動報錯,可通過cp /etc/ssh/sshd_config.bak /etc/ssh/sshd_config命令恢複原設定檔。
  4. 使用第三方SSH用戶端重新登入執行個體,驗證登入是否正常。