标签为 Mosh 的文章

使用Mosh来优化SSH连接

参考资料:
http://mosh.mit.edu
http://www.slashroot.in/mosh-better-alternative-ssh

背景介绍:
目前我维护的服务器,大部分都是在美国西海岸,从天朝连过去那速度,有时候真让人咬牙切齿。
无意间看到了Mosh这个玩意儿,试用了一下响应速度上没有特别大的提升,但基本上没有再断开和卡住过了。
查看了一下官方网站的介绍,大致了解了Mosh这个东西,最大的特点是基于udp方式传输,支持在服务端创建一个临时的Key供客户端一次性连接,退出后失效;也支持通过SSH的配置进行认证,但数据传输本身还是自身的udp方式。
另外,Mosh还有两个我觉得非常有用的功能:
1. 会话的中断不会导致当前正在前端执行的命令中断,相当于你所有的操作都是在screen命令中一样在后台执行;
2. 会话在中断过后,不会立刻退出,而是启用一个计时器,当网络恢复后会自动重新连接,同时会延续之前的会话,不会重新开启一个。

下面,是具体的安装配置过程:
客户端:demoenv
服务端:heydevops

1. 同时在服务器端与客户端上安装Mosh,这是一件非常简单的事情
[dong.guo@demoenv ~]$ sudo rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
[dong.guo@demoenv ~]$ sudo yum install mosh
[dong.guo@heydevops ~]$ sudo rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
[dong.guo@heydevops ~]$ sudo yum install mosh

2. 采用SSH配置进行认证,只需要在客户端上执行mosh命令即可
[dong.guo@demoenv ~]$ mosh dong.guo@heylinux.com
[dong.guo@heydevops ~]$ exit

 
logout
[mosh is exiting.]

如果服务端修改过SSH的端口,或需要指定单独的SSHKEY,可以通过--ssh参数的方式:
[dong.guo@demoenv ~]$ mosh --ssh="ssh -i /home/dong.guo/.ssh/oozie -p 2222"

3. 采用临时Key的方式进行一次性认证,需要在服务端创建Key,然后客户端通过这个Key进行登录,该Key会在会话结束十分钟后自动失效
创建一个临时的Key和端口供Client登录
[dong.guo@heydevops ~]$ mosh-server

MOSH CONNECT 60001 kk4Y4csML8rJmXXYc4Ibow
mosh-server (mosh 1.2.4)
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 = 27290]

首先定义好MOSH_KEY的值
[dong.guo@demoenv ~]$ export MOSH_KEY=kk4Y4csML8rJmXXYc4Ibow
注:mosh-client 后面只能跟服务器具体的IP地址和临时端口,不支持主机名或域名方式
[dong.guo@demoenv ~]$ mosh-client 192.168.92.128 60001
[dong.guo@heydevops ~]$ exit

logout
[mosh is exiting.]

2 Comments