突然無法通過 ssh 進入 CentOS 8 伺服器,出現錯誤“伺服器拒絕我們的密鑰”
我有一個 CentOS 8 伺服器,有幾個使用者使用 SSH 密鑰,幾天前我沒有遇到任何使用者登錄的問題。(密碼驗證被禁用,root 登錄也是如此。)
我今天去使用 PuTTY 和 WinSCP 登錄並得到一個不寒而栗:
伺服器拒絕了我們的密鑰
這發生在所有使用者身上。
sshd
似乎很明顯,因為它已經到了拒絕密鑰的地步。當我探勘日誌時,我看到:伺服器提供了這些身份驗證方法:publickey、gssapi-keyex、gssapi-with-mic
這表明
sshd
似乎執行正常。我嘗試使用Pageant中載入的密鑰登錄,我還嘗試繞過Pageant並直接在PuTTY和WinSCP中載入密鑰,密鑰仍然被拒絕。是的,它是正確的密鑰,並且沒有改變。
我碰巧有一個備份應用程序正在執行,因此我能夠看到伺服器上可能對文件進行了哪些更改。我可以確認
.ssh/authorized_keys
文件沒有被修改。也沒有sshd_config
,我下載並查看了。我最後一次登錄是幾天前,我做了一個
dnf update
,但我不明白這會如何影響這一切。有什麼想法可能導致這種情況嗎?
問題是
/home
權限。我有一個偷偷摸摸的懷疑,但拒絕接受這個想法,因為我沒有看到問題是如何發生的。當我回憶起記憶時,我隱約記得在處理目錄條目setfacl
時輸錯了命令。ACL
我不小心做了一個setfacl -Rn [...] /home
,弄亂sshd
了$home/.ssh/authorized_keys
.這意味著所有使用者都被鎖定了。
PasswordAuthentication
設置為,No
無法進入伺服器。那我是怎麼解決的呢?感謝 Acronis 備份。我只是sshd_config
從幾個月前恢復到它PasswordAuthentication
設置Yes
並添加reboot
為 postcommand 時。然後,我在伺服器重新啟動後使用密碼登錄,並setfacl -b
在正確的位置刪除了 ACL,一切都恢復正常。有點幸運,但我專門為幾個災難場景配置了備份,其中一個需要很久以前的文件。
PS:友好的建議,現在仔細檢查您的備份策略並投資於可靠的解決方案。如果沒有企業級備份,我會在嘗試將伺服器的硬碟驅動器移動到新伺服器並恢復我的 Web 應用程序,或者嘗試啟動到救援模式或其他一些乏味/不確定的方法時陷入困境。