TimothyQiu's Blog

keep it simple stupid

mosh

分类:技术

SSH 用起来有一个不方便的地方,就是断线就要重连,不用个 screen / tmux 啥的浑身不舒服。这种现象在台式机上还好,因为网络稳定,但到了笔记本 / 手机之类的设备上,从休眠中恢复、网络断开啥的并不鲜见。mosh 的全称是 mobile shell,顾名思义,正是专为解决这些「移动」客户端的烦恼而设计的 (b ̄(I) ̄)b

安装非常简单,各大平台都有二进制包可以直接使用,比如:

pacman -S mosh     # Arch Linux
brew install mosh  # Mac OS X

官网上列有一大堆其它平台的安装方法和源码编译指南:https://mosh.mit.edu/#getting

安装好的 mosh 分三部分:

其中,我们直接使用的是 mosh。用法和 ssh 一样,比如连接服务器:

mosh user@host

mosh 会先通过 SSH 连接到服务器,然后启动服务器上的 mosh-server,启动成功后 SSH 被断开,一切就交给本地的 mosh-client 来和远程的 mosh-server 用 UDP 在 60000-61000 端口通信了。

如果要透过 moshssh 传其它参数,那么就需要麻烦一些了,比如:

# 指定 SSH 端口
# mosh 自己的 -p 参数用来是指定 mosh-server 和 mosh-client 通信的 UDP 端口的
mosh --ssh="ssh -p 1024" user@host

使用过程中,如果网络延迟比较大,你会发现 mosh 不像 SSH 一样需要「盲打」,而是直接打出带下划线的字符。这就是 mosh 提供的「预测」模块的作用:在延迟比较大的时候,根据本地输入提前输出预期的结果,等收到远程服务器的实际结果后替换之。

网络意外断开时,窗口顶部会提示断开的时间和可用的转义序列,等网络恢复、顶部的提示消失,一切就会跟啥事都没发生过一样……

这篇文章没有标签

添加新评论 »