Mosh,全名Mobile Shell,是一個命令列應用程式,用於從客戶端電腦通過互聯網連接到伺服器。它可以用作SSH,並且包含比Secure Shell更多功能。
這是一個類似於SSH的應用程式,但具有額外功能。該應用程式最初由Keith Winstein編寫,針對類Unix操作系統,並在GNU GPL v3下發布。

Mosh的特點
- 它是一個支持漫遊的遠程終端應用程式。
- 適用於所有主要的類UNIX操作系統,如Linux、FreeBSD、Solaris、Mac OS X和Android。
- 支持間歇性連接。
- 提供智能本地回顯。
- 支持用戶按鍵的行編輯。
- 對wifi、蜂窩和長距離連接的響應設計和強大性質。
- 即使IP更改也保持連接。它使用UDP代替SSH使用的TCP。當連接被重置或分配新IP時,TCP會超時,但UDP會保持連接開啟。
- 在長時間後恢復會話時,連接保持完整。
- 無網絡延遲。立即顯示用戶輸入的按鍵和刪除,無需網絡延遲。
- 登錄方式與SSH中的相同。
- 處理丟包的機制。
在Linux中安裝Mosh Shell
在Debian、Ubuntu和Mint等系統上,您可以輕鬆使用Mosh套件,並借助apt-get套件管理器進行安裝,如下所示。
# apt-get update # apt-get install mosh
在基於RHEL/CentOS/Fedora的發行版中,您需要啟用名為EPEL的第三方存儲庫,才能使用yum套件管理器從該存儲庫安裝mosh,如下所示。
# yum update # yum install mosh
在Fedora 22+版本中,您需要使用dnf套件管理器來安裝mosh,如下所示。
# dnf install mosh
在其他Linux發行版中可以按照下面的方法安裝。
# pacman -S mosh [On Arch/Manjaro Linux] $ sudo zypper in mosh [On OpenSuse] # emerge net-misc/mosh [On Gentoo]
如何使用Mosh Shell?
1.讓我們嘗試使用mosh shell登錄到遠端Linux伺服器。
$ mosh [email protected]

注意:您是否看到我在連接時遇到錯誤,因為我遠端的CentOS 7主機的端口未開啟。我執行了一個快速但不推薦的解決方案:
# systemctl stop firewalld [on Remote Server]
首選方法是打開一個端口並更新防火牆規則。然後連接到預定端口上的 mosh。有關 firewalld 的詳細信息,您可以訪問這篇文章:
2. 讓我們假設將默認的 SSH 端口 22 更改為端口 70,在這種情況下,您可以使用 mosh 的 ‘-p‘ 選項定義自定義端口。
$ mosh [email protected] --ssh="ssh -p 70"
3. 檢查已安裝 Mosh 的版本。
$ mosh --version

4. 您可以關閉 mosh 會話,在提示符上輸入 ‘exit‘。
$ exit
5. Mosh 支持許多選項,您可以看到如下:
$ mosh --help

Mosh Shell 的缺點
- Mosh 需要額外的先決條件,例如,允許通過 UDP 進行直接連接,這是 SSH 不需要的。
- 在 60000-61000 範圍內動態分配端口。分配第一個開放的端口。它需要每個連接一個端口。
- 默認端口分配是一個嚴重的安全問題,特別是在生產環境中。
- 支持 IPv6 連接,但不支持在 IPv6 上漫遊。
- 不支持滾動回看。
- 不支持 X11 轉發。
- 不支持 ssh-agent 轉發。
結論
Mosh 是一個非常方便的小工具,可以在大多數 Linux 發行版的存儲庫中下載。儘管它存在一些缺陷,特別是安全方面的問題和額外的要求,但其保持連接即使在漫遊時的功能是其優點。我建議每個處理 SSH 的 Linux 用戶都應該嘗試使用這個應用程序,要記住,Mosh 是值得一試的。
Source:
https://www.tecmint.com/mosh-shell-ssh-alternative-on-linux/