
我希望我的 SSH 登入工作階段在電腦進入睡眠和喚醒狀態後保持連線。據我了解,TCP 可以在間歇性網路問題中生存,那麼我可以更改設定以使其能夠生存幾個小時或幾天嗎?如果沒有的話,有沒有類似 SSH 的東西可以做到這一點?
我了解我可以將 SSH 設定為在網路再次可用時自動重新連線。但這並不理想,因為我希望我的登入工作階段與筆記型電腦進入睡眠狀態之前的位置完全相同(即使是在 shell 命令列中鍵入內容的一半)。
我了解還有其他解決方法,但我希望有一種方法可以避免首先丟失 shell 會話。
答案1
答案2
screen
或者tmux
絕對是要走的路。然後,連接ssh
就僅成為達到目的的一種手段,並且在空閒時斷開連接的頻率不再重要(在合理範圍內)。
screen
如果您在登入遠端伺服器時必須記住啟動而煩惱,那麼讓互動式會話自動加入現有會話screen
或啟動新會話(如果尚未運行)並不那麼困難。
答案3
岩石(Reliable sOCketS) 是建立客戶端 TCP 連線的程式的包裝器,它可以偵測 TCP 連線何時失敗並自動重新連線客戶端,即使客戶端已移至其他網路也是如此。論文裡有描述過可靠的網路連接並且是可供下載。它沒有維護,但它使用相當穩定的接口,所以它今天應該仍然可以工作。它使用庫預先載入 ( LD_PRELOAD
) 來隱藏標準函式庫函數,因此它僅適用於動態連結的可執行檔。你只需將其運行為
rocks ssh …
Rocks 處理客戶端移動性,而不是伺服器移動性。如果伺服器移動,您可能需要使用襪子代理人。
對於互動式會話,一個不錯的選擇是莫許。它專為不可靠的連接而設計,並支援客戶端移動性。如果連線不可靠,Mosh 就會遺失數據,因此它僅可用於互動式會話。
如果您有一個基本可靠但偶爾移動的連接,那麼 Mosh 的替代方案是自動SSH自動重新連接,以及螢幕或者多路復用器在伺服器上運行。即使客戶端斷開連接,screen/tmux 會話仍保留在伺服器上,並且如果連接斷開,autossh 會自動重新連接。