![SSH 會話在資料流中暫停;按鍵恢復](https://rvso.com/image/23947/SSH%20%E6%9C%83%E8%A9%B1%E5%9C%A8%E8%B3%87%E6%96%99%E6%B5%81%E4%B8%AD%E6%9A%AB%E5%81%9C%EF%BC%9B%E6%8C%89%E9%8D%B5%E6%81%A2%E5%BE%A9.png)
我曾經遇到過這個問題在多個公司、多個發行版和多個核心版本中隨機、間歇性地發生。我想我只是被詛咒了。
發生的情況是,我將加載一個新盒子,並且我將在 ssh 內執行某些操作,例如 yum update 或 apt-get。一切都會進展順利,然後會話就會停止。 ssh 不會斷開連接,就像有人向會話發送了滾動鎖定按鍵一樣。
如果我在 ssh 會話中按 Enter 鍵、空白鍵或任何按鍵,會話就會重新喚醒,就好像沒有發生任何問題一樣。
我曾經追蹤過這樣的問題,發現交互進程正在進入 SLEEP 狀態。我無法確認在這種情況下這是相同的行為,但如果我能找出具體原因,我將修改問題。
無論如何,我始終無法弄清楚為什麼這些進程會隨機進入睡眠狀態。
有沒有人遇到過這個或類似的問題,並且了解可能導致該問題的原因?
答案1
我曾經有過類似的事情。事實證明 TCP 斷開連接然後重新連接,因為會話上的 MTU 錯誤。當長輸出發送到終端時,就會發生這種情況(長輸出意味著大資料包意味著超過真實的MTU 限制,假設您透過隧道連接)。
就我而言,調製解調器重置(我在家裡使用 VPN)解決了這個問題。在另一個類似的情況下—防火牆/VPN 閘道上的設定做到了這一點。
當有大量輸出進入控制台時會發生這種情況嗎?如果是這樣,您可以嘗試在遠端機器上執行 tcpdump,對檔案說,看看是否是這種情況?