解決頁

為什麼在 CentOS 上關閉 SSH 密碼登入後就連不上了

最常見的原因是先關閉了 PasswordAuthentication,卻沒有先確認目標帳號已經存在可用的 authorized_keys,並且沒有先做一次成功的金鑰登入驗證。

更新時間 2026-04-07

問題說明

CentOS 主機在關閉 SSH 密碼登入後立刻無法連線,最常見的原因是什麼?

大多數情況下,並不是伺服器把 SSH 整體關掉了,而是你把「最後僅剩的驗證方式」切成了公鑰,但目標帳號並沒有真正可用的公鑰路徑。這可能是 authorized_keys 不存在、公鑰加在了錯誤的使用者下、檔案權限不對,或者客戶端送出的根本不是你以為的那把 key。

正確做法應該把「關閉密碼登入」視為最後一步,而不是第一步。先保留目前連線,再從另一個終端驗證一次全新的金鑰登入,只有確認成功之後,才去關掉 PasswordAuthentication。

用一個受控腳本來做這件事,能明顯降低誤鎖風險,因為它會先檢查 authorized_keys、執行 sshd -t 語法校驗,並在設定確定可用後才重新載入服務。它不能替你修復所有金鑰錯配問題,但能避開最常見的自鎖場景。

處理重點

  • 先確認 usable authorized_keys 到底屬於哪個帳號
  • 檢查 .ssh 目錄和 authorized_keys 權限是否正確
  • 關閉舊工作階段前先做一次全新的金鑰登入測試
  • 如果公鑰屬於非 root 使用者,執行腳本時使用 TARGET_USER

所屬專題

面向仍在運行 CentOS 7 的遺留主機,集中處理 yum 源失效、鏡像倉庫 404、Docker 資料遷移等維運恢復場景。