ssh卡顿还经常掉线?试下mosh吧!
Mosh,又名Mobile Shell,是交互式终端ssh的替代品。
与ssh相比,mosh的优势如下:
1. 在wifi与蜂窝数据间任意切换网络,mosh连接不受影响。
2. 永远保持连接。计算机随时可以休眠,重新唤醒后,mosh连接完好无损, 除非你手动把进程kill掉。
3. 无网络延迟。在你打字的时候,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。
ssh卡顿还经常掉线?试下mosh吧!yum install mosh
如果提示无法匹配,那么你需要扩展yum源,安装epel库。
扩展yum源
首先,确认你的CentOS版本。
ssh卡顿还经常掉线?试下mosh吧!cat /etc/redhat-release
笔者的操作系统是CentOS 7,所以需执行:
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
ps. 其他版本的系统可在以下链接获取到相应命令。
https://fedoraproject.org/wiki/EPEL
需知此时epel源虽已安装,但是并没有生效,需使用yum-config-manager命令手动启用。
# 启用epel库
yum-config-manager --enable epel
# 刷新仓库缓存
yum clean all && yum makecache
ps. 可以使用yum repolist [all|enabled|disabled]来查看yum的所有/已启用/已禁用的仓库列表。
# 查看目前已启用的仓库,可以看到epel的仓库已启用。
yum repolist
epel安装好后,就可以使用yum安装mosh啦,安装后无需手动启动。
yum -y install mosh
安装成功,现在可以在客户端尝试连接啦~
如何运行
1. 如果你没有修改过ssh的端口,只需在客户端执行︎
mosh root@203.109.86.12
2. 如果已修改ssh端口,则需通过-P指定ssh的端口(注意-P是大写哦~(。ì _ í。)
mosh -P 29806 root@203.109.86.12
最后
mosh也并不全是优点,他有个bug,输出超过一屏时,只显示最后一屏的内容,不支持回滚。所以需要查看全部输出时,可在命令后加上”| less”来翻页查看。
不过这个问题跟永不掉线和丝般顺滑比起来,真的无伤大雅了。
听说这个问题会在新版本修复,敬请期待吧。。
最后的最后,推荐一个app呀,ios的Blink,可以连接服务器,而且支持mosh哟,每次mosh连上服务器后,不管ipad待机多久,都不用担心掉线,随时打开随时用,感觉真的棒极啦~