一个常见的问题是,当您打开远程会话(例如 ssh 或 tmux)时,您不小心 cat 了一个大文件。屏幕开始转储文本,您无法终止它。我猜那些 udp 会话可能更适合这种情况,但有没有什么简单的技巧可以避免这个问题(除了不在远程服务器上 cat 大文件)或有效地终止屏幕转储。
答案1
mosh
是 ssh 的替代 shell 程序。
官方网站介绍了以下各种好处。特别是最后一项可以解决您的问题,但也有许多其他好处。安装因发行版而异,本指南展示如何为大多数发行版打开相关 UDP 端口(默认值:60000-61000)。唯一的缺点是回滚需要一些额外的工作(它会同步屏幕状态,因此原则上很难回滚),但您提到 tmux 可以解决这个问题。
- 更改 IP。保持连接。
当您在互联网连接之间移动时,Mosh 会自动漫游。在火车上使用 Wi-Fi、在酒店使用以太网、在海滩使用 LTE:您将保持登录状态。大多数网络程序在漫游后都会失去连接,包括 SSH 和 Gmail 等 Web 应用。Mosh 则不同。
- 讓我們做个甜蜜的夢想。
使用 Mosh,您可以让笔记本电脑进入睡眠状态,稍后再唤醒,同时保持连接畅通。如果您的互联网连接断开,Mosh 会向您发出警告 — 但当网络服务恢复时,连接会恢复。
- 摆脱网络延迟。
SSH 会等待服务器的回复,然后才显示您自己的输入。这可能会导致用户界面很差。Mosh 则不同:它会立即响应输入、删除和行编辑。它会自适应地执行此操作,甚至可以在 emacs 和 vim 等全屏程序中运行。在连接不佳的情况下,未完成的预测会用下划线标出,这样您就不会被误导。
- 没有特权代码。没有守护进程。
您无需成为超级用户即可安装或运行 Mosh。客户端和服务器是由普通用户运行的可执行文件,并且仅在连接生命周期内有效。
- 相同的登录方法。
Mosh 不会监听网络端口或验证用户身份。mosh 客户端通过 SSH 登录到服务器,用户提供与之前相同的凭据(例如密码、公钥)。然后 Mosh 远程运行 mosh-server 并通过 UDP 连接到它。
- 在您的终端内运行,但效果更好。
Mosh 是一个命令行程序,类似于 ssh。您可以在 xterm、gnome-terminal、urxvt、Terminal.app、iTerm、emacs、screen 或 tmux 中使用它。但 mosh 是从头开始设计的,仅支持一种字符集:UTF-8。它修复了其他终端和 SSH 中的 Unicode 错误。
- Control-C 效果很好。
与 SSH 不同,mosh 基于 UDP 的协议能够妥善处理数据包丢失,并根据网络状况设置帧速率。Mosh 不会填满网络缓冲区,因此 Control-C 始终可以阻止失控进程。