問題說明
CentOS 主機在關閉 SSH 密碼登入後立刻無法連線,最常見的原因是什麼?
大多數情況下,並不是伺服器把 SSH 整體關掉了,而是你把「最後僅剩的驗證方式」切成了公鑰,但目標帳號並沒有真正可用的公鑰路徑。這可能是 authorized_keys 不存在、公鑰加在了錯誤的使用者下、檔案權限不對,或者客戶端送出的根本不是你以為的那把 key。
正確做法應該把「關閉密碼登入」視為最後一步,而不是第一步。先保留目前連線,再從另一個終端驗證一次全新的金鑰登入,只有確認成功之後,才去關掉 PasswordAuthentication。
用一個受控腳本來做這件事,能明顯降低誤鎖風險,因為它會先檢查 authorized_keys、執行 sshd -t 語法校驗,並在設定確定可用後才重新載入服務。它不能替你修復所有金鑰錯配問題,但能避開最常見的自鎖場景。
處理重點
- 先確認 usable authorized_keys 到底屬於哪個帳號
- 檢查 .ssh 目錄和 authorized_keys 權限是否正確
- 關閉舊工作階段前先做一次全新的金鑰登入測試
- 如果公鑰屬於非 root 使用者,執行腳本時使用 TARGET_USER