一、簡(jiǎn)介
Mosh表示移動(dòng)Shell(Mobile Shell)括细,是一個(gè)用于從客戶端跨互聯(lián)網(wǎng)連接遠(yuǎn)程服務(wù)器的命令行工具伪很。它能用于SSH連接,但是比Secure Shell功能更多奋单。它是一個(gè)類似于SSH而帶有更多功能的應(yīng)用锉试。程序最初由Keith Winstein編寫,用于類Unix的操作系統(tǒng)中览濒,發(fā)布于GNU GPL V3協(xié)議下呆盖。
Mosh最大的特點(diǎn)是基于UDP方式傳輸,支持在服務(wù)端創(chuàng)建一個(gè)臨時(shí)的Key供客戶端一次性連接贷笛,退出后失效应又;也支持通過SSH的配置進(jìn)行認(rèn)證,但數(shù)據(jù)傳輸本身還是自身的UDP方式乏苦。
Mosh的功能:
- 它是一個(gè)支持漫游的遠(yuǎn)程終端程序
- 在所有主流的類 Unix 版本中可用株扛,如 Linux、FreeBSD、Solaris洞就、Mac OS X和Android
- 支持不穩(wěn)定連接
- 支持智能的本地回顯
- 支持用戶輸入的行編輯
- 響應(yīng)式設(shè)計(jì)及在 wifi盆繁、3G、長(zhǎng)距離連接下的魯棒性
- 在IP改變后保持連接奖磁。它使用UDP代替TCP(在SSH中使用)改基,當(dāng)連接被重置或者獲得新的IP后TCP會(huì)超時(shí),但是UDP仍然保持連接
- 在很長(zhǎng)的時(shí)候之后恢復(fù)會(huì)話時(shí)仍然保持連接
- 沒有網(wǎng)絡(luò)延遲咖为。立即顯示用戶輸入和刪除而沒有延遲
- 像SSH那樣支持一些舊的方式登錄
包丟失處理機(jī)制 - 會(huì)話的中斷不會(huì)導(dǎo)致當(dāng)前正在前端執(zhí)行的命令中斷秕狰,相當(dāng)于你所有的操作都是在screen命令中一樣在后臺(tái)執(zhí)行。
- 會(huì)話在中斷過后躁染,不會(huì)立刻退出鸣哀,而是啟用一個(gè)計(jì)時(shí)器,當(dāng)網(wǎng)絡(luò)恢復(fù)后會(huì)自動(dòng)重新連接吞彤,同時(shí)會(huì)延續(xù)之前的會(huì)話我衬,不會(huì)重新開啟一個(gè)。
二饰恕、安裝
Linux平臺(tái)
-
Debian挠羔、Ubuntu和Mint類似系統(tǒng)中使用apt-get包管理器安裝:
apt-get update apt-get install mosh
-
RHEL/CentOS/Fedora或類似系統(tǒng)中使用yum 包管理器安裝mosh,你需要打開第三方的EPEL:
yum update yum install mosh
-
Fedora 22+的版本中使用dnf包管理器來安裝:
dnf install mosh
Windows客戶端
建議使用Cygwin安裝mosh:
C:\> setup.exe -q mobile-shell
MacOX
使用Homebrew OS X 10.5或更高版本安裝:
brew install mosh
三埋嵌、使用
客戶端使用mosh連接服務(wù)器:
mosh root@172.16.1.1
如圖所示:
四破加、語(yǔ)法
# mosh --help
Usage: /usr/bin/mosh [options] [--] [user@]host [command...]
--client=PATH mosh client on local machine
(default: "mosh-client")
--server=COMMAND mosh server on remote machine
(default: "mosh-server")
--predict=adaptive local echo for slower links [default]
-a --predict=always use local echo even on fast links
-n --predict=never never use local echo
--predict=experimental aggressively echo even when incorrect
-4 --family=inet use IPv4 only
-6 --family=inet6 use IPv6 only
--family=auto autodetect network type for single-family hosts only
--family=all try all network types
--family=prefer-inet use all network types, but try IPv4 first [default]
--family=prefer-inet6 use all network types, but try IPv6 first
-p PORT[:PORT2]
--port=PORT[:PORT2] server-side UDP port or range
(No effect on server-side SSH port)
--bind-server={ssh|any|IP} ask the server to reply from an IP address
(default: "ssh")
--ssh=COMMAND ssh command to run when setting up session
(example: "ssh -p 2222")
(default: "ssh")
--no-ssh-pty do not allocate a pseudo tty on ssh connection
--no-init do not send terminal initialization string
--local run mosh-server locally without using ssh
--experimental-remote-ip=(local|remote|proxy) select the method for
discovering the remote IP address to use for mosh
(default: "proxy")
--help this message
--version version and copyright information
Please report bugs to mosh-devel@mit.edu.
Mosh home page: https://mosh.org