如何使用開源MOSH獲得持久性的SSH連接?
譯文【51CTO.com快譯】如果您在公司內使用多個無線或有線連接,又發覺自己要在園區內走動以履行管理職責,會遇到這種情況:您建立了一條SSH連接,但從一個網絡漫游到另一個。出現這種情況時,您的安全外殼連接會斷掉。或者也許您的單條網絡連接并不總是最可靠的?如果您在執行的管理任務不是很重要,那沒什么。如果您在執行重要的任務,這條連接又斷掉,會發生什么?
您不想那樣,這就是為什么應該使用MOSH之類的工具。MOSH的全稱是移動外殼(Mobile Shell),讓您可以獲得持久性的SSH連接,即使更改網絡或連接暫時中斷。更棒的是,MOSH的使用與SSH幾乎一樣,至少從用戶的角度來看是這樣。在底層,MOSH通過SSH讓用戶登錄,然后在60000至61000之間的UDP端口上啟動連接,以保持連接持久性。
不妨安裝MOSH,看看其用法。
您需要什么?
MOSH適用于Linux、macOS、Windows、Android和iOS。您必須在服務器和客戶端上都安裝MOSH軟件包。我將用基于Ubuntu的Linux發行版來演示兩端。如果用戶使用MacOS,確保從MOSH下載頁面下載二進制安裝程序。如果用戶使用Windows,沒有原生軟件包,因此您必須使用MOSH for Chrome。
如何安裝MOSH?
可以在我的發行版標準存儲庫中找到MOSH。要在基于Ubuntu的發行版上安裝MOSH,命令將是:
- sudo apt-get install mosh -y
如果您使用基于Red Hat的Linux發行版,命令將是:
- sudo dnf install mosh -y
確保在客戶端和服務器上都安裝了MOSH。
如何使用MOSH?
當然,這假設您已經可以使用SSH建立從客戶端到服務器的連接。在這種情況下,您可以使用MOSH來建立該連接,如下所示:
- mosh USER@SERVER
其中USER是遠程用戶名,SERVER是服務器的IP地址或域。
如果由于某種原因需要使用不同的UDP端口,命令將是:
- mosh -p PORT USER @ SERVER
其中PORT是端口號,USER是遠程用戶名,SERVER是服務器的IP地址或域。
如果您已將SSH配置為在服務器上使用非標準端口,必須在MOSH命令中定義它,如下所示:
- mosh --ssh="ssh -p PORT" USER@SERVER
其中PORT是服務器上的非標準SSH端口,USER是遠程用戶名,SERVER是服務器的IP地址。您可以結合UDP和SSH端口方面的更改,就像這樣:
- mosh -p UDP --ssh="ssh -p SSH" USER@SERVER
其中UDP是UDP端口,SSH是SSH端口,USER是遠程用戶名,SERVER是服務器的IP地址或域。
MOSH也可以使用SSH身份,就像SSH中使用SSH身份那樣,如下所示:
- mosh -i IDENTITY
其中IDENTITY是您在~/.ssh/config中配置的身份的名稱。
如何配置防火墻?
您可能會遇到的一個問題是,服務器上的防火墻拒絕連接至MOSH將使用的必要端口。這個問題很容易解決。在使用“不復雜防火墻”的服務器(比如Ubuntu Server)上,打開這些端口的命令將是:
- sudo ufw allow 60000:61000/udp
如果您的服務器使用iptables,命令將是:
- sudo iptables -I INPUT 1 -p udp --dport 60000:61000 -j ACCEPT
一旦您允許端口訪問,MOSH應該可以正常工作了。
這就是在MOSH的幫助下,在客戶端和服務器之間獲得比較可靠的SSH連接所需的全部步驟。試一下這款工具,看看即使從一個網絡漫游到另一個網絡,您的SSH連接是否仍保持連接狀態。
原文標題:How to achieve persistent SSH connections with the open source MOSH,作者:Jack Wallen
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】

























