SSH 登錄明明密碼正確,卻反復提示 Permission denied 或 Access Denied,SCP 傳輸同樣失效。本文記錄一次真實排查全過程,揭示 /etc/ssh/sshd_config 中 AllowUsers 指令的隱形封鎖,提供系統化排查清單。
Permission denied, please try again.passwd)無效。Access Denied。/home、/root 權限,嘗試用 /tmp 中轉 —— 無效。PermitRootLogin:確認 sshd_config 中 PermitRootLogin yes —— 已開啟。/etc/passwd 644、/etc/shadow 000 —— 正常。AllowUsers 指令仔細閱讀 /etc/ssh/sshd_config 末尾,發現:
AllowUsers user1 user2
機制:AllowUsers 為白名單機制,僅列表中的用戶允許 SSH 登錄,未列入者(包括 root)直接拒絕,優先級高於 PermitRootLogin。
vim /etc/ssh/sshd_configAllowUsers 後追加 root:AllowUsers user1 user2 rootsystemctl restart sshd(或 /etc/init.d/sshd restart)/etc/init.d/sshd restart
驗證:SSH 登錄、SCP 傳輸均恢復正常。
| 層級 | 檢查項 | 命令/文件 | 典型誤區 |
|---|---|---|---|
| 網絡 | 端口通達性 | telnet IP 22 / nc -zv IP 22 | 防火牆/安全組未放行 22 |
| 服務 | sshd 運行狀態 | systemctl status sshd | 服務未啟/端口被佔用 |
| 配置 認證 | 密碼驗證開關 | PasswordAuthentication yes | 被改為 no 僅允許密鑰 |
| Root 登錄開關 | PermitRootLogin yes/prohibit-password/no | prohibit-password 僅允許密鑰 | |
| 用戶白名單 | AllowUsers / AllowGroups | 隱形封鎖 root/其他用戶,優先級最高 | |
| 用戶黑名單 | DenyUsers / DenyGroups | 誤將 root 加入黑名單 | |
| 賬號 | 賬號鎖定/過期 | passwd -S root / chage -l root | 密碼過期、賬號鎖定 |
| 文件 權限 | 家目錄/密鑰權限 | ~/.ssh 700, authorized_keys 600 | 權限過寬導致密鑰被忽略 |
| 日志 | 認證失敗詳情 | journalctl -u sshd -f / /var/log/secure | 只看現象不看日志 |
| SELinux | 上下文標籤 | restorecon -Rv ~/.ssh | 家目錄遷移後上下文錯誤 |
PermitRootLogin prohibit-password + 密鑰認證。AllowGroups 替代 AllowUsers:將允許 SSH 登錄的用戶加入 sshlogin 組,配置 AllowGroups sshlogin,用戶管理解耦配置文件。sshd -t 語法檢查,修改後保持一個會話開啟再重啟服務,防止把自己鎖在外面。rsyslog/journald 持久化存儲 /var/log/secure,便於事後追溯。