聽說mosh好使,那么怎么在Mac本下使用mosh來登錄Ubuntu及AWS服務器呢?
mosh介紹
mosh官網在:https://mosh.org/
代碼開源在:https://github.com/mobile-shell/mosh
賣點就是通過UDP傳輸,網絡切換可以自動重連,不會導致執行中的命令斷掉。
mosh安裝
Ubuntu下安裝mosh服務器:
$ sudo apt-get install mosh
Mac下安裝mosh客戶端:
$ brew install mosh
運行
Ubuntu下運行mosh-server
:
$ 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端口,比如建立兩個連接就是60001、60002,以此類推。
假設Mosh使用60001 UDP端口,則在服務器上運行
$ iptables -I INPUT -p udp –dport 60001 -j ACCEPT
這樣就在服務器上打開60001這個UDP端口。
當然,最好是把上一條命令寫入服務器iptables的規則中,這樣不必要每次都手動打開這個端口。
Amazon AWS
我在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