使用 SSH 客戶端(如 PuTTY、OpenSSH)連線 Linux 伺服器時,若出現 Access Denied,即使密碼確定正確,通常是伺服器端 sshd_config 設定、帳號權限或家目錄權限問題。本文提供系統性排查步驟。
若 /home 或使用者家目錄權限過嚴(如 700 僅 root 可存取),SSHD 讀取 ~/.ssh/authorized_keys 失敗導致拒絕。
# 正確權限範例
chmod 755 /home
chmod 700 /home/username
chmod 700 /home/username/.ssh
chmod 600 /home/username/.ssh/authorized_keys
chown -R username:username /home/username
編輯 /etc/ssh/sshd_config,確認以下項目:
| 參數 | 建議值 | 說明 |
|---|---|---|
PermitRootLogin | yes / prohibit-password | 允許 root 登入(僅金鑰)或密碼 |
PubkeyAuthentication | yes | 啟用公開金鑰認證 |
PasswordAuthentication | yes | 啟用密碼認證(若僅用金鑰可設 no) |
AuthorizedKeysFile | .ssh/authorized_keys | 金鑰檔路徑(相對家目錄) |
AllowUsers | user1 user2 root | 若設定此參數,必須包含欲登入的帳號 |
DenyUsers | (空或特定帳號) | 拒絕清單優先於允許清單 |
關鍵發現:許多案例中 AllowUsers 僅列出一般使用者,導致 root 即使密碼正確也被拒絕。解決:在 AllowUsers 後加入 root 或註解該行。
若啟用 SELinux(getenforce 顯示 Enforcing),需確認 ~/.ssh 標籤正確:
restorecon -Rv /home/username/.ssh
sudo systemctl restart sshd
# 或
sudo service sshd restart
若 root 確實無法登入,可建立新帳號並加入 wheel/sudo 群組:
useradd -m -G wheel adminuser
passwd adminuser
# 編輯 /etc/sudoers 或 /etc/sudoers.d/adminuser
adminuser ALL=(ALL) ALL
以新帳號登入後再排查 root 問題。

依序檢查家目錄權限、sshd_config 的 AllowUsers/PermitRootLogin、SELinux 標籤,即可解決 90% 以上的 Access Denied 問題。
Linux 原始碼套件安裝完整指南:./configure、make、make install、前綴路徑、清理與解除安裝
Linux 查看磁碟空間八大神器:df、fdisk、cfdisk、parted、lsblk、df -h、du、ncdu
Ubuntu 進程 CPU 綁定實戰:使用 taskset 指令將進程釘選到指定 CPU 核心
Linux 中文亂碼徹底解決:語言包安裝、Locale 設定與終端機編碼對齊
Linux 使用 ls -F 與 grep 快速篩選可執行檔案與目錄
Ubuntu Git 每次 push/pull 都要輸入密碼?設定 credential.helper store 永久快取認證