**应用背景:**当有海外服务器维护需求的时候,常常会遇到使用ssh终端延时高并经常性假死的情况,非常影响维护效率。然后一个能缓解延时假死的小工具就是十分有用的,Mosh正是这样一个工具。Mosh是一个用于从客户端跨互联网连接远程服务器的命令行工具,程序最初由Keith Winstein 编写,用于类Unix的操作系统中,发布于GNU GPL V3协议下,基于UDP方式进行数据传输。
Mosh的优缺点:
优点: 1.回话保持(会话的中断不会导致当前正在前端执行的命令中断;会话在中断过后,会自动在当前会话重新连接) 2.基本支持全平台(Linux、FreeBSD、Solaris、Mac OS X和Android) 3.切换网络/暂时断网后回话自动连接
缺点: 1.需要开启额外UDP端口 2.在网络状况良好的状况下不宜使用 3.状态同步、维持心跳、协助预测的ACK包都增加了传输的数据量
Mosh Server安装配置
**Tips:**我的环境为aws的ec2,另外需要开放一些UDP端口,官方默认是让开60000-61000端口,生产环境下最好对端口进行更改
- 安装环境依赖包
1
yum install -y autoconf automake libtool curl make g++ unzip zlib zlib-devel ncurses-devel openssl-devel
- 安装protobuf的依赖
1 2 3 4 5 6 7 8 9 10
wget https://github.com/google/protobuf/releases/download/v3.3.0/protobuf-cpp-3.3.0.tar.gz tar xvf protobuf-cpp-3.3.0.tar.gz cd protobuf-cpp-3.3.0 #./configure --prefix=/usr/local/protobuf ./configure – prefix=/usr – libdir=/usr/lib64 make make check make install #echo "/usr/local/protobuf/lib/" >> /etc/ld.so.conf #ldconfig
- 可能需要
1 2 3
#export LD_LIBRARY_PATH=/usr/local/protobuf/lib/ #export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/protobuf/lib/ #export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
- 安装mosh
1 2 3 4 5 6 7 8
wget https://mosh.org/mosh-1.3.0.tar.gz tar xvf mosh-1.3.0.tar.gz cd mosh-1.3.0 ./autogen.sh ./configure --prefix=/usr/local/mosh make make install export PATH=$PATH:/usr/local/mosh/bin/
- 启动mosh server
1 2 3 4 5 6 7
# 启动进程 /usr/local/bin/mosh-server #要确保mosh-server在用户的PATH中,不然连接不上 # 查看进程是否正常 ps axu | grep mosh #Auser 1866 0.0 0.0 163172 5900 ? S 02:33 0:00 mosh-server new -c 256 -s -l LANG=zh_CN.UTF-8 #Auser 2181 0.0 0.0 162612 5184 ? S 03:25 0:00 mosh-server new -c 256 -s -l LANG=zh_CN.UTF-8
Mosh Clinet安装配置
支持全平台,我这是mac系统,所以就只写了mac的,如有需要在官方文档处进行查看,做对应的安装
- MacOS客户端
1
brew install mobile-shell
- 使用mosh连接服务器
1 2 3
#我这里是先将本地的公钥写到要连接服务器的authorized_keys文件中 /usr/local/bin/mosh --ssh="ssh -p 7777 " Auser@arvon.top #我这里由于ssh的默认端口更改了,所以需要指定端口7777