Neil Developer

mosh 的安装和使用

2015-07-14
Neil

ssh 的服务器如果延迟比较大的话, 还是比较痛苦的.
今天发现了这个东西: mosh

http://scm.zoomquiet.io/data/20131104091538/index.html
http://www.zfanw.com/blog/mosh.html

它是为了解决两个问题:

  1. 线路不稳定, 丢包率高.
  2. 线路延迟大, 操作延迟大.

简单的讲, 它使用普通的ssh协议认证, 然后传输使用udp协议.

使用udp协议的好处是不用总是保持连接, 用来解决第一个问题, 就是高丢包率. 就算丢包,也不会断,因为本来就是 udp , 没有连接.

为了处理延迟大的问题, 它在客户端做了优化, 包括输入回显预测机制,让你感觉到输入流畅了. 以及打包及拆包发送等等. 实测效果比较流畅.大有改观.

目前的缺陷, 就是只支持交互式shell环境, 不支持X转发,和端口转发等.

简单说一下安装方法.

  1. 安装服务端.

服务端已经支持了几乎所有的平台. 安装也很简单:

https://mosh.mit.edu/#getting

apt-get install mosh

服务端默认使用 udp 60001 端口传输, 所以可能需要你打开防火墙端口:

iptables -I INPUT -p udp --dport 60001 -j ACCEPT
  1. 安装客户端.
    如果是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
  1. 使用方法.

启动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


Comments

Content