問題現象
遠程登入失敗:使用第三方 SSH 用戶端(如 PuTTY, Xshell, SecureCRT)串連 Linux 執行個體時,用戶端提示
Access denied或Permission denied, please try again.錯誤。系統安全日誌:系統日誌
/var/log/secure中包含not allowed because等相關資訊。
問題原因
預設情況下,Linux 執行個體的 SSH 服務允許系統上所有使用者賬戶通過憑證(密碼或密鑰)進行登入。當SSH服務組態檔/etc/ssh/sshd_config中啟用了登入限制策略時,配置不當會導致特定使用者無法登入執行個體。
AllowUsers:使用者白名單,僅允許清單中的使用者登入。
DenyUsers:使用者黑名單,拒絕列表中的使用者登入。
AllowGroups:使用者組白名單,僅允許清單中的使用者組中的使用者登入。
DenyGroups:使用者組黑名單,拒絕列表中的使用者組中的使用者登入。
拒絕策略(Deny*)的優先順序高於允許策略(Allow*)。如果一個使用者同時滿足允許和拒絕的條件,該使用者將被拒絕登入。
解決方案
通過VNC串連登入ECS執行個體。
訪問ECS控制台-執行個體。在頁面左側頂部,選擇目標資源所在的資源群組和地區。
進入目標執行個體詳情頁,單擊遠端連線,選擇通過VNC遠端連線。輸入帳號和密碼,登入ECS執行個體。
檢查並修改SSH設定檔。
備份設定檔,以便在修改錯誤時快速恢複。
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak定位並調整存取控制策略。
sudo vi /etc/ssh/sshd_config選擇以下任一方式進行修改:
方式一:注釋所有限制規則
若不需要登入限制,在
AllowUsers、DenyUsers、AllowGroups以及DenyGroups參數行的行首添加#符號將其注釋掉,讓所有系統使用者都能登入。# AllowUsers userA userB # DenyUsers userC方式二:修正限制規則
為確保策略的明確性,應避免同時使用白名單(Allow*)和黑名單(Deny*)規則。
使用白名單策略(用於只允許少數使用者登入的情境)
僅保留
AllowUsers或AllowGroups參數,將需要登入的使用者或使用者組添加到列表中,同時注釋或刪除所有Deny*參數。AllowUsers userA userB newUser # DenyUsers userC以上樣本表示僅允許
userA、userB、newUser三個使用者登入,其他所有使用者都無法登入。使用黑名單策略(用於只拒絕少數使用者登入的情境)
僅保留DenyUsers或DenyGroups參數,將需要禁止登入的使用者或使用者組添加到列表中,同時注釋或刪除所有
Allow*參數。# AllowUsers userA userB DenyUsers userC userD以上樣本表示拒絕
userC、userD使用者登入,其他所有使用者都可以登入。
重啟SSH服務,使配置生效。
sudo systemctl restart sshd.service若啟動報錯,可通過
cp /etc/ssh/sshd_config.bak /etc/ssh/sshd_config命令恢複原設定檔。使用第三方SSH用戶端重新登入執行個體,驗證登入是否正常。