Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux SSH 連線出現 Access Denied 的三大排查方向與解決方法

編輯:關於 Linux

使用 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

二、sshd_config 關鍵設定檢查

編輯 /etc/ssh/sshd_config,確認以下項目:

參數建議值說明
PermitRootLoginyes / prohibit-password允許 root 登入(僅金鑰)或密碼
PubkeyAuthenticationyes啟用公開金鑰認證
PasswordAuthenticationyes啟用密碼認證(若僅用金鑰可設 no)
AuthorizedKeysFile.ssh/authorized_keys金鑰檔路徑(相對家目錄)
AllowUsersuser1 user2 root若設定此參數,必須包含欲登入的帳號
DenyUsers(空或特定帳號)拒絕清單優先於允許清單

關鍵發現:許多案例中 AllowUsers 僅列出一般使用者,導致 root 即使密碼正確也被拒絕。解決:在 AllowUsers 後加入 root 或註解該行。

三、SELinux / AppArmor 阻擋

若啟用 SELinux(getenforce 顯示 Enforcing),需確認 ~/.ssh 標籤正確:

restorecon -Rv /home/username/.ssh

四、重新啟動 SSHD 使設定生效

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 問題。

SSH Access Denied 排查示意圖

依序檢查家目錄權限、sshd_config 的 AllowUsers/PermitRootLogin、SELinux 標籤,即可解決 90% 以上的 Access Denied 問題。

Copyright © Windows教程網 All Rights Reserved