據說mosh好使,那麼怎麼在Mac本下使用mosh來登陸Ubuntu及AWS服務器呢?html
mosh官網在:https://mosh.org/
代碼開源在:https://github.com/mobile-shell/moshgit
賣點就是經過UDP傳輸,網絡切換能夠自動重連,不會致使執行中的命令斷掉。github
Ubuntu下安裝mosh服務器:redis
$ sudo apt-get install mosh
Mac下安裝mosh客戶端:shell
$ brew install mosh
Ubuntu下運行mosh-server
:ubuntu
$ mosh-server MOSH CONNECT 60001 y8btZAE3fjpmzQu7s/4XWg mosh-server (mosh 1.3.2) [build mosh 1.3.2] Copyright 2012 Keith Winstein <mosh-devel@mit.edu> License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. [mosh-server detached, pid = 7195]
看到mosh-server detached
不要慌,畢竟它也不監聽端口。安全
假設服務器地址爲123.123.123.123
,用戶名是etworker
,則Mac下運行:服務器
$ mosh etworker@123.123.123.123
若是一切順利,鏈接起來就像ssh同樣。
若是服務器ssh的端口是2222,則用下面的方式鏈接:網絡
$ mosh --ssh="ssh -p 2222" etworker@123.123.123.123
Mosh使用的UDP協議鏈接的,使用的端口是從60000到61000,若是開啓了防火牆服務器上就須要打開相應的UDP端口。
一個Mosh鏈接就會打開一個UDP端口,好比創建兩個鏈接就是6000一、60002,以此類推。ssh
假設Mosh使用60001 UDP端口,則在服務器上運行
$ iptables -I INPUT -p udp –dport 60001 -j ACCEPT
這樣就在服務器上打開60001這個UDP端口。
固然,最好是把上一條命令寫入服務器iptables的規則中,這樣沒必要要每次都手動打開這個端口。
我在Amazon上的服務器是經過key文件作的鑑權,因此先說一下Mac怎麼ssh上去。
先將密鑰文件拷貝到Mac上,比方說文件名叫xxx.pem
,而後修改權限:
$ chmod 400 xxx.pem
假設服務器地址是111.111.111.111,進到xxx.pem
同目錄下,ssh以下:
$ ssh -i xxx.pem ubuntu@111.111.111.111
此時在服務器上安裝mosh,方式同上。
注意須要在安全組裏面配置端口,開放6000-61000的UDP端口。
安全組的端口過濾方法,應該不須要再細說了吧。
接着就可使用Mac來鏈接了:
$ mosh --ssh="/usr/bin/ssh -i xxx.pem" ubuntu@111.111.111.111