ssh 的服务器如果延迟比较大的话, 还是比较痛苦的.
今天发现了这个东西: mosh
http://scm.zoomquiet.io/data/20131104091538/index.html
http://www.zfanw.com/blog/mosh.html
它是为了解决两个问题:
- 线路不稳定, 丢包率高.
- 线路延迟大, 操作延迟大.
简单的讲, 它使用普通的ssh协议认证, 然后传输使用udp协议.
使用udp协议的好处是不用总是保持连接, 用来解决第一个问题, 就是高丢包率. 就算丢包,也不会断,因为本来就是 udp , 没有连接.
为了处理延迟大的问题, 它在客户端做了优化, 包括输入回显预测机制,让你感觉到输入流畅了. 以及打包及拆包发送等等. 实测效果比较流畅.大有改观.
目前的缺陷, 就是只支持交互式shell环境, 不支持X转发,和端口转发等.
简单说一下安装方法.
- 安装服务端.
服务端已经支持了几乎所有的平台. 安装也很简单:
https://mosh.mit.edu/#getting
apt-get install mosh
服务端默认使用 udp 60001 端口传输, 所以可能需要你打开防火墙端口:
iptables -I INPUT -p udp --dport 60001 -j ACCEPT
- 安装客户端.
如果是linux, 也使用同样的命令安装:
apt-get install mosh
我是windows, 官方客户端只支持cygwin. 所以要先安装cygwin.
mosh已经进入cygwin的仓库, 但是默认没有安装.
在cygwin安装时, 需要搜索添加mosh.
如果已经安装过cygwin了, 再次运行安装程序, 然后在安装时搜索找到mosh 安装即可.
mosh 只能在 纯的 utf-8 环境下工作. 所以在运行 mosh之前, 要改cygwin的语言.
找到 cygwin的 C:\cygwin64\home\neil.bashrc 文件.
在文件末尾加入如下两行.
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
- 使用方法.
启动cygwin的shell.
直接输入命令:
mosh root@myserver.com
如果ssh的端口改了.
mosh -ssh="ssh -p 1234" root@myserver.com
更新:
今天发现有官方的 chrome 插件 客户端. 可以在浏览器里直接连接vps了.
https://chrome.google.com/webstore/detail/mosh/ooiklbnjmhbcgemelgfhaeaocllobloj