介绍
Mosh表示移动Shell(Mobile Shell),是一个用于从客户端跨互联网连接远程服务器的命令行工具。它能用于SSH连接,但是比Secure Shell功能更多。它是一个类似于SSH而带有更多功能的应用。程序最初由Keith Winstein 编写,用于类Unix的操作系统中,发布于GNU GPL V3协议下。
Mosh 最大的特点是基于 UDP 方式传输,支持在服务端创建一个临时的 Key 供客户端一次性连接,退出后失效;也支持通过 SSH 的配置进行认证,但数据传输本身还是自身的 UDP 方式。
使用场景
- 我有一台远端服务器,输命令卡、一段时间不使用自动断开(设置心跳可以解决),切换网络自动断开,严重困扰操作远程服务器,多数是服务器在境外、或者境内网络不好的情况
Mosh的功能
- 它是一个支持漫游的远程终端程序
在IP改变后保持连接。它使用UDP代替TCP(在SSH中使用),当连接被重置或者获得新的IP后TCP会超时,但是UDP仍然保持连接 - 在所有主流的类 Unix 版本中可用,如 Linux、FreeBSD、Solaris、Mac OS X和Android
- 支持不稳定连接(例如:境外机器/不同运营商机器)
- 支持智能的本地回显(减少 Linux 命令打断感)
- 支持用户输入的行编辑(???)
如何使用
安装
官网都有非常明确的安装说明,这里提醒一下,安装命令是客户端和服务端通用的,即安装后会同时安装 Mosh-client 和 Mosh-server,默认使用 60000 - 61000 端口进行连接,要确保服务端防火墙开启了这个范围的端口使用。
使用
不需要启动任何守护进程,直接从客户端进行连接即可,只是把原先的 ssh 替换成 mosh: mosh xxxx@123.321.123.321
问题
mosh-server needs a UTF-8 native locale to run.
虽然说了一堆服务端设置错误,但是 mosh 需要服务端和客户端同时使用 UTF-8 进行编码,确保服务端正常的情况下(粗暴的解决)如果是使用 MAC 系统,这种问题先检查一下自己的LC_ALL
,在自己的 shell 配置(.bashrc/.zshrc)中添加export LC_ALL="en_US.UTF-8"
,source .zshrc
即可生效;这个解决方案 Linux 应该是通用的- 其他常见问题官网也有一些解决方式,或者通过 Google