類似 SSH 的會話可以在實體網路斷開後繼續存在

類似 SSH 的會話可以在實體網路斷開後繼續存在

我希望我的 SSH 登入工作階段在電腦進入睡眠和喚醒狀態後保持連線。據我了解,TCP 可以在間歇性網路問題中生存,那麼我可以更改設定以使其能夠生存幾個小時或幾天嗎?如果沒有的話,有沒有類似 SSH 的東西可以做到這一點?

我了解我可以將 SSH 設定為在網路再次可用時自動重新連線。但這並不理想,因為我希望我的登入工作階段與筆記型電腦進入睡眠狀態之前的位置完全相同(即使是在 shell 命令列中鍵入內容的一半)。

我了解還有其他解決方法,但我希望有一種方法可以避免首先丟失 shell 會話。

答案1

TCP 連接應該能夠在斷開連接後繼續存在,但是一些過於熱心的防火牆可能會丟棄空閒連接,並且如果發生這種情況,它也無法在 IP 位址更改後繼續存在。

對於互動式會話,我會運行莫許。它透過 UDP 實現類似 SSH 的終端連接,支援在必要時從另一個 IP 位址重新連接,並且具有一些支援不穩定連接的功能。

無論您決定使用 SSH 還是 Mosh,都可以使用螢幕或者多路復用器也使您的會話獨立於連接。

答案2

screen或者tmux絕對是要走的路。然後,連接ssh就僅成為達到目的的一種手段,並且在空閒時斷開連接的頻率不再重要(在合理範圍內)。

screen如果您在登入遠端伺服器時必須記住啟動而煩惱,那麼讓互動式會話自動加入現有會話screen或啟動新會話(如果尚未運行)並不那麼困難。

答案3

岩石(Reliable sOCketS) 是建立客戶端 TCP 連線的程式的包裝器,它可以偵測 TCP 連線何時失敗並自動重新連線客戶端,即使客戶端已移至其他網路也是如此。論文裡有描述過可靠的網路連接並且是可供下載。它沒有維護,但它使用相當穩定的接口,所以它今天應該仍然可以工作。它使用庫預先載入 ( LD_PRELOAD) 來隱藏標準函式庫函數,因此它僅適用於動態連結的可執行檔。你只需將其運行為

rocks ssh …

Rocks 處理客戶端移動性,而不是伺服器移動性。如果伺服器移動,您可能需要使用襪子代理人。

對於互動式會話,一個不錯的選擇是莫許。它專為不可靠的連接而設計,並支援客戶端移動性。如果連線不可靠,Mosh 就會遺失數據,因此它僅可用於互動式會話。

如果您有一個基本可靠但偶爾移動的連接,那麼 Mosh 的替代方案是自動SSH自動重新連接,以及螢幕或者多路復用器在伺服器上運行。即使客戶端斷開連接,screen/tmux 會話仍保留在伺服器上,並且如果連接斷開,autossh 會自動重新連接。

相關內容