問題現象
通過SSH遠端連線Linux執行個體時,即使輸入正確的使用者名稱和密碼,串連請求仍被服務端拒絕,返回Permission denied, please try again。
問題診斷
通過VNC串連登入ECS執行個體。
訪問ECS控制台-執行個體。在頁面左側頂部,選擇目標資源所在的資源群組和地區。
進入目標執行個體詳情頁,單擊遠端連線,選擇通過VNC遠端連線。輸入帳號和密碼,登入ECS執行個體。
檢查SSH服務配置。
若配置中的
PermitRootLogin或PasswordAuthentication參數被設定為no,請參考情境一:SSH配置禁止登入進行修複。PermitRootLogin:若設定為no,則禁止root使用者通過SSH登入。PasswordAuthentication:若設定為no,則禁止所有使用者使用密碼方式登入。
sudo cat /etc/ssh/sshd_config檢查系統安全日誌。
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配置禁止登入
修改配置
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儲存並退出文字編輯器。檢查配置並重啟服務
檢查設定檔文法是否正確。若未返回任何錯誤,表示文法正確。
sudo sshd -t重載服務使配置生效。
sudo systemctl restart sshd
驗證串連
再次通過SSH遠端連線執行個體,驗證是否可以串連成功。
情境二:SELinux策略阻止登入
檢查SELinux目前狀態
確認SELinux是否處於
enforcing(強制)模式。sudo sestatus若回執資訊中的
SELinux status為enabled且Current mode為enforcing,則表明SELinux策略正在生效。臨時調整SELinux模式以恢複訪問
將SELinux臨時切換到
permissive(寬容)模式,SELinux只記錄警告而不強制阻止操作。sudo setenforce 0重要該命令僅臨時調整狀態,重啟失效。
執行後,通過SSH重新登入。如果登入成功,則證明問題由SELinux引起。
永久修改SELinux配置(可選)
修改設定檔:將SELinux的預設模式從
enforcing修改為permissive。sudo sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config重啟執行個體:使設定檔修改生效。
驗證串連
再次通過SSH遠端連線執行個體,驗證是否可以串連成功。