用 mosh 估计超过半年了,因为基本上无缝替换 SSH,所以都没有太意识到它的存在,一直忘记了上来推荐一下。如其名字,mosh 差不多就是为移动设备设计的 SSH,现在的发展趋势:笔记本越来越轻便,网速越来越快,服务器越来越强大。结果几乎工作模式都变成了通过笔记本 SSH 到不知道肉身在世界的哪个角落的服务器上做计算。
这其中有一个小小的不便之处就是笔记本不管是从休眠中恢复也好,还是从一处拿到另一处也好,如果网络断开重新连接了,那么 SSH 之类的连接基本上也就挂掉了,当然如果在服务器上用了 GNU Screen 或者 tmux 之类的东西,那么其实只是要再重新连接一下 SSH 然后再 attach 到之前的 session 上就好了,其实也只是小麻烦,但终究还是麻烦的。mosh 就是为了解决这样的麻烦而设计的。
使用非常简单,只要连 SSH 的时候用 mosh
命令代替即可。这样即使你网络断开(截图中顶上的状态栏就是网络断开时 mosh
给的状态提示)或者休眠之后,当网络重新连上之时,mosh
会自动重新连接,而对于你在 mosh 里运行的程序来说,一切就好像你的 SSH
连接从来没有断开过一样。并且替换是无缝的,SSH
所有的公钥私钥验证全都支持——因为 mosh 在登陆验证这部分其实是直接用 SSH
的。
除此之外,由于使用了 UDP,mosh 号称延迟方面也比 SSH 人性化很多。我确实是在非常糟糕的网络环境下也用过 mosh,因为它并不像 SSH 那样等待服务端响应之后才把按键显示出来,所以不会因为卡顿而出现类似于“盲打”的情况,但是也只是感觉比较流畅一点而已,因为毕竟网速慢的话软件层面也没有太多办法。
在使用之前需要同时安装客户端和服务端。比较好玩的是我之前一直以为不需要安装服务端,因为我尝试的时候直接就
work 了,估计是因为在这边已经比较普及了所以我尝试的 server
上都已经安装好了吧,毕竟是自己学校这边搞出来的东西。不过即使要自己安装也非常方便,如果在服务端没有权限,只要安装在自己的
home 目录下面,然后把可执行文件的路径加到 PATH 里,让 SSH
登陆的时候能够找到 mosh-server 这个命令就好了。
另外,mosh 还有一个 Chrome 插件,也许可以在网吧之类的只有 Chrome 浏览器的地方应急的时候用?或者大概主要还是给 ChromeBook 用的吧?
最后,目前 mosh 的最新版本是 1.2.4,这个版本有一个小问题就是不会汇报鼠标事件,如果你在远程的 VIM 或者 tmux 等支持鼠标事件的程序中喜欢用滚轮或者触摸屏滚动屏幕的话,可能会有点不习惯。如果不能忍,可以自己编译安装 git 里的最新版本的 mosh。如果是 OS X 下用 Homebrew 安装的话,只要用
brew install --HEAD mosh
即可安装 git 最新版本。废话就不多说了,请慢用! :P
Comments
你天天用 mosh 登录到 MIT 服务器进行科学计算对吗?
MIT 开发的啊,可谓发扬光大了黑客传统。
如果要安装服务端就很难在工作环境中使用了
为什么?如果是权限问题的话文中说了装在 home 目录下毫无问题的,我自己就是这样用的。
嗯,服务器端可以放在自己的 home 目录下,但是 UDP 端口得要防火墙放行…工作环境里的服务器很多做不到这点的说。
嗯,如果这个都卡死的话那也没有办法了。
nice啊,休眠断开什么的太讨厌了
以前有订阅Blog到Google Reader的习惯,收藏了你的Blog,所以对你的名字大概有点印象。然后刚刚Cheston发邮件让大家参加I2R的Seminar,看到Speaker的名字觉得很眼熟,再过来查一下果然是的,好神奇呀!
哈哈!多多指教哈!
用不到,不过路过say hello,因为我有礼貌
有礼貌星人你好。
terminal用的是什么?好像比我的好
就是 iterm2
你开了tmux对吗?我的怎么没有右下的prompt、时间?Normal那一整排也没有
是的,tmux 稍微配置一下,网上有很多现成的配置文件可以搜得到。
normal的是vim插件
什么插件……
powerline: https://github.com/Lokaltog... ,可以参考我用的vim配置文件https://github.com/alfredto...
iterm2的配色和背景图可以share吗
发到你邮箱了。
博主可以给我也发一份吗?Thanks in advance!
请查收。
博主能给我发一份么?多谢~
求再发一份
这个功能真是超赞啊!
美哭 刚下了iTerm 求学长的配置
博主用的什么字体,我感觉挺漂亮的,方便告知下么~
哪里的字体?
就是终端里面的代码字体,不好意思,没描述清楚~
有点忘记了,我经常换字体的,你可以试试 PT Mono、Fira Mono、Input Mono、Office Code Pro,可能是其中一种。
嗯,找到了,是Fira Mono,多谢~
博主的文章很好,正好最近翻译 Linode library 一篇 Mosh 文章,借鉴了一下。
mosh太棒了!对了,不知道mosh是否支持访问在NAT之后没有公网IP的机器?用ssh的话我一般先做一个反向代理,把本机的22端口挂到一台远程的服务器上,然后用ssh登录远程服务器然后在登录挂上去的机器。
这个我也不是很清楚……感觉美国大学太奢侈了,随便一台角落里上灰的破电脑都有自己的独立公网 IP,平时不太碰到这样的情况。
是 MIT 太奢侈了…… 拥有整个 18.0.0.0/8 IP 段
呃……
ubuntu下可以很方便的安装最新的1.2.6版本,就解决鼠标的问题了:
sudo add-apt-repository ppa:keithw/mosh-dev
sudo apt-get update
sudo apt-get install mosh
不会因为卡顿而出现类似于“盲打”的情况 但是碰到vim的esc模式我估计还是得跪2333
是的,会显示你打的命令字符,然后过一阵子才一下子执行。。。
有时差的原因,这两天一直在期待您的年终总结。两个月前在百度上搜索EM算法实现,找到您的博客之后,仿佛发现了藏宝地。好多迷茫的问题,看你快10年前写的文章搞懂了,把您所有机器学习相关的博客全都打印下来了,收获很大,虽然现在还没完全看完。。。看到您写的一些人生感悟,也是佩服的不行。祝您新的一年工作顺利!......另外,iterm2的配色和背景图可以share吗?😁😆
谢谢!新年快乐!