我经常在州际公路上,使用基于 Windows 的笔记本电脑通过手机连接 SSH 到我的 Ubuntu 开发机器。由于手机连接的特殊性,加上停车加油等,我大约每小时会断线一次。然后我通过 SSH 重新连接到服务器。如果我打开了 vim,我必须删除 tmp 文件。这还不算太糟,但我更希望更快地回到我正在做的事情上。
我依稀记得,在某个时候,我通过 SSH 进入了一台机器,发现在我断开连接之前一直在执行的任何长时间运行的命令仍在运行。
我知道 tmux。我知道这是一个可行的解决方案,但我更喜欢 Just Works(tm) 的解决方案。
这就是我的问题。有没有办法可以配置 SSH,使其在会话断开连接时不终止会话,这样如果我重新连接,就可以立即回到我之前的操作?
谢谢
答案1
Screen
是一个终端多路复用器,它允许用户在单个终端窗口或远程终端会话(例如使用 SSH 时)内访问多个单独的终端会话。
Screen
如果您的连接不稳定,这非常有用。例如,如果您想使用wget
ssh 下载文件并退出,然后在一小时左右后返回。
只需输入 console 即可创建一个新的“虚拟控制台” screen
。然后,在断开 ssh 会话后,您可以随时连接,发出screen -r
命令重新连接到虚拟控制台
答案2
mosh - 使用 UDP 端口来“检查并恢复”原始连接。*(*类比描述,而不是技术上正确的描述)。
screen 非常适合在服务器上打开一个新的“工作区”,您可以在恢复会话时连接和断开连接。就我个人而言,我会在“实际工作”之间偷偷进行终端工作,因此通过 ssh 重新进入会话并打开 screen 很麻烦,而 Mosh 会在管道“断开”时直接恢复 SSH 连接,而不会中断会话。
如果您将其打开,您所在位置的安全性可能会降低,但只需“继续”或漂移连接的便利因素意味着您不必经历重新连接和重新连接屏幕会话。
如有疑问,请同时使用两者。:)