使用 Mosh 和 Tmux 在 Linux 上获得更好的远程会话

Linux 的优势之一是其面向网络的定位,这主要归功于其 Unix 传统。 Linux 成为服务器的首选操作系统是有原因的。

远程访问 Linux 服务器的主要方式是通过 SSH 或 Secure Shell。 虽然它有用且安全,但它是在 Wi-Fi 和蜂窝连接普及之前的时代设计的。

如果您将计算机移至不同的 Wi-Fi 网络或使其进入睡眠状态,您可能会发现自己与明显冻结的终端屏幕断开连接。

为什么选择 Mosh + Tmux?

幸运的是,有一些工具可以使使用 SSH 的远程计算更容易使用和更可靠。 您可以在任何东西上使用它们,从数据中心的物理终端到家庭服务器、云服务器,甚至是另一台运行 Unix 或 BSD 操作系统的台式机。

莫什 是 SSH 之上的一个工具,可以让它知道不断变化的网络连接,并且 多路复用器 是一个“终端多路复用器”,可让您跨不同登录保留 shell 会话,甚至共享它们。

开始使用 Mosh

Mosh 项目主页

Mosh 是一个开源项目,它使 SSH 在漫游和间歇性连接上工作,因为许多无线连接都是两者兼而有之。

您可以将计算机从有线网络切换到有线网络,再切换到不同的无线网络,您的连接将保持正常。 您还可以在连接时让笔记本电脑进入睡眠状态,并且在网络重新连接后,您将能够在终端窗口中输入内容。

如果您失去网络连接,Mosh 会告诉您它没有收到来自远程服务器的消息。 如果服务器回显字符的速度很慢,它会在您输入的内容下划线,直到返回最新屏幕。

作者撰写的论文中有更多技术细节,但以用户身份安装它非常简单。 Mosh 在大多数 Linux 发行版的包管理器中广泛使用。 它也可以作为 Google Chrome 应用程序。

在 Linux 上安装 Mosh

为了 example在 Ubuntu 中安装:

sudo apt install mosh

当然,服务器也必须安装 Mosh 服务器。 Mosh 的优点是服务器组件可以在用户模式下运行,因此您不必是 root 即可安装它。

使用 Mosh

当您想连接到远程计算机时,只需键入:

mosh username@server

显然,您需要将“用户名”和“服务器”替换为您的用户名和您尝试连接的机器的名称。

如果您有更特殊的需求,例如连接到不同的端口,请参阅文档。

如果一切正常,您将拥有一个远程终端会话,只需使用 SSH。 您将能够以相同的方式发出命令,但您的连接将更加可靠。

开始使用 Tmux

Tmux 项目主页

您有一个远程终端连接,可以在无线网络变化后继续存在,但是当您最终连接时呢?

您可能会运行需要很长时间的作业,例如安装软件甚至是长时间的编译作业。 如果断开连接会发生什么。 当终端完成时,该工作可能会退出。

此外,您在终端中一次只能做一件事,即使有作业控制。 如果您想运行全屏编辑器,它将占用整个终端。

Tmux 是这些问题的答案之一。 它是一个“终端多路复用器”,可让您在一个窗口中运行多个终端。 它就像 Linux 桌面上的选项卡式终端,但更加灵活。

您可以分离会话并注销,稍后再返回并从上次中断的地方继续。 您可以打开多个终端窗口。 您可以在编辑器的一个窗口中编辑程序,并在另一个窗口的命令行中对其进行测试。

安装 tmux 也很容易。 与 Mosh 一样,它包含在许多 Linux 发行版包管理器中。 在 Ubuntu 中,您只需键入:

sudo apt install tmux

显然,您必须在远程机器上安装它才能在那里使用它,但它在本地也非常有用。

安装后,您可以使用以下命令启动 tmux:

tmux

然后,您将启动一个终端窗口,类似于您在本地启动的窗口。 您将看到一个状态栏,显示您所在的窗口。

tmux 状态栏显示哪个窗口被突出显示

Tmux 将屏幕划分为具有多个“窗格”的“窗口”,显示它们自己的终端。 您可以重新排列这些窗格并调整其大小,无限的窗口都有自己的窗格。

因为 tmux 是一个基于终端的程序,所以它完全由键盘控制。 在 tmux 中执行命令的默认前缀命令是 Ctrl+B. 这可以在配置文件中更改。

用户配置文件是主目录中的 .tmux.conf。 该文档有更多详细信息,但您可以执行的自定义数量非常多。

Tmux 可能有一个学习曲线,但是对于 Linux/Unix 世界中的其他“困难”程序,许多用户发现花在学习这些程序上的时间花在了让他们做的事情上。

最强大的选项之一是能够分离会话并稍后重新附加到它。 为此,请键入 Ctrl+D. 要重新连接,请在 shell 中键入“tmux attach”,然后您会发现自己回到了会话中。

这意味着您的会话将与机器一样长。 这种方法在运行 IRC 等聊天应用程序时也很流行,因为人们可以长时间呆在聊天室中。 也可以与其他人共享会话,例如结对编程。

结合 Mosh 和 Tmux

远程会话的真正威力来自 Mosh 和 tmux 的组合。

使用 Mosh,您可以从任何地方登录到您的远程计算机,而不必担心连接的可靠性。 如果你想运行一些可能需要很长时间的东西,你可以分离你的会话,然后再回来。

Mosh 和 tmux 的结合将使您在远程登录中获得最大的可靠性和灵活性。 仅在 tmux 中就可以探索更多内容,这将释放终端会话的力量。