遠端 Debian 系統阻止登入

遠端 Debian 系統阻止登入

我在運行 Debian (squeeze) 的網路上有十幾台單板計算機,並透過 ssh 存取它們(ssh 伺服器是 dropbear)。為了了解這些電腦的硬件,它們是 1.2 GHz x86 處理器、1GB RAM 和格式化為 ext2 的 4GB 閃存驅動器(我避免使用 ext3 以防止日誌記錄增加閃存寫入壓力),上面還有一個交換分區驅動器。

通常,我使用的設定效果很好,我可以存取所有電腦。每隔一段時間就會有人阻止訪問。發生的情況是我嘗試通過ssh(putty)連接,它給了我登錄提示,我輸入用戶名和密碼,它響應“訪問被拒絕”,並且它還會拒絕~/.ssh/authorized_keys 中的任何公鑰。憑證與之前的工作方式一樣正確。電腦回應 ping,並且 putty 識別伺服器公鑰,這對我來說意味著系統仍在運行。重新啟動伺服器解決了問題,我可以再次登入。 (我嘗試了一個臨時修復,將 shutdown -r now 放在根 crontab 中,但是一旦發生掛起,這似乎就不能可靠地運行)一旦我重新啟動,但任何系統日誌中似乎都沒有任何信息為了表明發生了什麼,該時間段內的日誌只是空的,就好像系統崩潰了一樣。

系統上運行的一些自訂軟體似乎停止工作(這就是我想首先使用 ssh 的原因)。我假設這個程式是問題的根源,但我不確定它是如何導致它以及如何調試正在發生的事情。

我能想到的最可能的解釋是,另一個程式中存在記憶體洩漏,由於沒有足夠的可用內存,因此阻止了 dropbear 產生新的登入 shell(以及 crontab 執行關閉)。但是查看其他(正在工作的)電腦的記憶體使用情況,似乎沒有任何有意義的記憶體增加表明存在洩漏(除非它是非常大、快速且罕見的洩漏)。我認為當作業系統記憶體不足時,它會重新啟動系統或終止進程(Linux 核心會重新啟動,對嗎?)。我想知道的另一件事是,它們在閃存驅動器上運行的事實是否會產生一些影響,特別是交換分區(我認為我應該刪除它以防止閃存磨損),但閃存驅動器還很年輕(~ 1個月),我認為磨損還不是因素。

有誰知道什麼可能導致這些症狀,是否可能是由於記憶體洩漏或其他我沒有想到的原因造成的。有人知道嘗試偵錯問題並找出有關問題所在的更多資訊的方法嗎?

答案1

事實證明,該問題與我使用的特定閃存驅動器有關。他們有這個特殊的「U3」垃圾,如果沒有完全卸載,顯然會在 Linux 上造成問題。我決定無論如何切換到更“實時”類型的安裝會更好。現在,我在啟動時將根檔案系統轉移到記憶體中並從中運行,因此閃存驅動器對於系統繼續運行並不重要。

http://live.debian.net/manual/

相關內容