ssh卡顿还经常掉线?试下mosh吧!

2,809 阅读3分钟

Mosh,又名Mobile Shell,是交互式终端ssh的替代品。

与ssh相比,mosh的优势如下:

  • 在wifi与蜂窝数据间任意切换网络,mosh连接不受影响。
  • 永远保持连接。计算机随时可以休眠,重新唤醒后,mosh连接完好无损, 除非你手动把进程kill掉。
  • 无网络延迟。在你打字的时候,ssh会等待服务器的响应。而mosh正好相反,不管是在输入、删除还是编辑行,mosh都会即时响应,让你有种丝般顺滑的感觉。

mosh运行原理

mosh包含两个程序,mosh-client和mosh-server。客户端与服务端都需要安装mosh,但不需要手动启动mosh-client或者mosh-server,因为每次使用mosh,这两个程序都是自动启动的。

默认情况下,mosh会通过ssh连接到服务器,然后在服务端启动mosh-server。接着他关闭ssh连接,在客户端启动mosh-client并通过UDP连接上服务器。

之后这个连接一直存在,用户可以通过mosh做以前ssh能做的一切操作。除非mosh-client被kill掉,这个连接会一直保持,不管网络掉线还是客户端异常。

ps. mosh使用的是60000到61000的端口。

如何安装

ps. 本文只针对CentOS系统,其他系统的安装请参考mosh官网

CentOS下,最快的安装方式是使用yum。

yum install mosh

如果提示无法匹配,那么你需要扩展yum源,安装epel库。

扩展yum源

  1. 首先,确认你的CentOS版本。不同系统版本对应的epel库不一样。
    cat /etc/redhat-release
    

  1. 安装epel库。笔者的操作系统是CentOS 7,所以需执行:

    yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
    

    其他版本的CentOS系统可在EPEL wiki获取到相应命令。

  2. 启用epel库。

    # 启用epel库
    yum-config-manager --enable epel
    # 刷新仓库缓存
    yum clean all && yum makecache
    
  3. 查看已启用的仓库列表。

    yum repolist
    

  1. 现在可以安装mosh啦,安装后无需手动启动。
    yum -y install mosh
    

安装成功,现在去客户端尝试连接吧~

如何运行

  1. 如果你没有修改过ssh的端口,只需在客户端执行
mosh root@203.109.86.12
  1. 如果已修改ssh端口,则需通过-P指定ssh的端口(注意-P是大写哦~(。ì _ í。)
mosh -P 29806 root@203.109.86.12

最后

mosh也并不全是优点,他有个bug,输出超过一屏时,只显示最后一屏的内容,不支持回滚。所以需要查看全部输出时,可在命令后加上”| less”来翻页查看。

不过这个问题跟永不掉线和丝般顺滑比起来,真的无伤大雅了。

听说这个问题会在新版本修复,敬请期待吧。。

最后的最后,推荐一个app呀,ios的Blink,可以连接服务器,而且支持mosh哟,每次mosh连上服务器后,不管ipad待机多久,都不用担心掉线,随时打开随时用,感觉真的棒极啦~m