[笔记]mosh使用笔记

听说mosh好使,那么怎么在Mac本下使用mosh来登录Ubuntu及AWS服务器呢?

mosh介绍

mosh官网在:https://mosh.org/
代码开源在:https://github.com/mobile-shell/mosh

[笔记]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 <[email protected]>
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 [email protected]

如果一切顺利,连接起来就像ssh一样。
如果服务器ssh的端口是2222,则用下面的方式连接:

$ mosh --ssh="ssh -p 2222" [email protected]

注意

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 [email protected]

此时在服务器上安装mosh,方式同上。
注意需要在安全组里面配置端口,开放6000-61000的UDP端口。
安全组的端口过滤方法,应该不需要再细说了吧。

接着就可以使用Mac来连接了:

$ mosh --ssh="/usr/bin/ssh -i xxx.pem" [email protected]

参考文献

  • 使用Mosh来优化SSH连接
  • mosh - 一款替代SSH的UDP远程终端软件