mosh:一個基於 SSH 用於連線遠端 Unix/Linux 系統的工具

Avishek Kumar發表於2015-09-22

Mosh 表示移動 ShellMobile Shell,是一個用於從客戶端跨網際網路連線遠端伺服器的命令列工具。它能用於 SSH 連線,但是比 Secure Shell 功能更多。它是一個類似於 SSH 而帶有更多功能的應用。程式最初由 Keith Winstein 編寫,用於類 Unix 的作業系統中,釋出於GNU GPL v3協議下。

Mosh Shell SSH Client

Mosh Shell SSH 客戶端

Mosh的功能

  • 它是一個支援漫遊的遠端終端程式。
  • 在所有主流的類 Unix 版本中可用,如 Linux、FreeBSD、Solaris、Mac OS X 和 Android。
  • 支援不穩定連線
  • 支援智慧的本地回顯
  • 支援使用者輸入的行編輯
  • 響應式設計及在 wifi、3G、長距離連線下的魯棒性
  • 在 IP 改變後保持連線。它使用 UDP 代替 TCP(在 SSH 中使用),當連線被重置或者獲得新的 IP 後 TCP 會超時,但是 UDP 仍然保持連線。
  • 在很長的時候之後恢復會話時仍然保持連線。
  • 沒有網路延遲。立即顯示使用者輸入和刪除而沒有延遲
  • 像 SSH 那樣支援一些舊的方式登入。
  • 包丟失處理機制

Linux 中 mosh 的安裝

在 Debian、Ubuntu 和 Mint 類似的系統中,你可以很容易地用 apt-get 包管理器安裝。

# apt-get update 
# apt-get install mosh

在基於 RHEL/CentOS/Fedora 的系統中,要使用 yum 包管理器安裝 mosh,你需要開啟第三方的 EPEL

# yum update
# yum install mosh

在 Fedora 22+的版本中,你需要使用 dnf 包管理器來安裝 mosh。

# dnf install mosh

我該如何使用 mosh?

1、 讓我們嘗試使用 mosh 登入遠端 Linux 伺服器。

$ mosh root@192.168.0.150

Mosh Shell Remote Connection

mosh遠端連線

注意:你有沒有看到一個連線錯誤,因為我在 CentOS 7中還有開啟這個埠。一個快速但是我並不建議的解決方法是:

# systemctl stop firewalld    [在遠端伺服器上]

更好的方法是開啟一個埠並更新防火牆規則。接著用 mosh 連線到預定義的埠中。至於更深入的細節,也許你會對下面的文章感興趣。

  • 如何配置 Firewalld

2、 讓我們假設把預設的 22 埠改到 70,這時使用 -p 選項來使用自定義埠。

$ mosh -p 70 root@192.168.0.150

3、 檢查 mosh 的版本

$ mosh --version

Check Mosh Version

檢查mosh版本

4、 你可以輸入exit來退出 mosh 會話。

$ exit

5、 mosh 支援很多選項,你可以用下面的方法看到:

$ mosh --help

Mosh Shell Options

Mosh 選項

mosh 的優缺點

  • mosh 有額外的需求,比如需要允許 UDP 直接連線,這在 SSH 不需要。
  • 動態分配的埠範圍是 60000-61000。第一個開啟的埠是分配好的。每個連線都需要一個埠。
  • 預設的埠分配是一個嚴重的安全問題,尤其是在生產環境中。
  • 支援 IPv6 連線,但是不支援 IPv6 漫遊。
  • 不支援回滾
  • 不支援 X11 轉發
  • 不支援 ssh-agent 轉發

總結

mosh是一款在大多數linux發行版的倉庫中可以下載的一款小工具。雖然它有一些差異尤其是安全問題和額外的需求,它的功能,比如漫遊後保持連線是一個加分點。我的建議是任何一個使用ssh的linux使用者都應該試試這個程式,mosh值得一試。


via: http://www.tecmint.com/install-mosh-shell-ssh-client-in-linux/

作者:Avishek Kumar 譯者:geekpi 校對:wxy

本文由 LCTT 原創翻譯,Linux中國 榮譽推出

相關文章