不使用多路复用器 (screen/tmux) 断开 ssh 连接后恢复术语

不使用多路复用器 (screen/tmux) 断开 ssh 连接后恢复术语

Screen 和 tmux(类似 emacs)是功能丰富的终端多路复用器,旨在让您像 1985 年一样高效地管理终端,但它们只是使在切换网络等后恢复 ssh 会话的简单任务变得复杂。

我在需要时使用 tmux,但通常我不需要分割窗格、多个窗口、会话等……我当然不想因为终端混乱而产生烦人的影响

我(以及这​​个网站上其他六个不懂 tmux 的人)想要的是断开连接后继续运行的 ssh 包装器/克隆(按键后重新连接)和 sshd 包装器/克隆,在断开连接时缓冲所有输出,在重新连接时将其流式传输

我见过最接近的东西是 Mosh,但这有什么难的?每个 ssh 连接都必须有一个唯一的 ID(如果没有其他方法,请使用会话密钥的哈希值),并且 tcp 协议意味着 sshd/ssh(或它们使用的内核缓冲区)必须保留在 ssh/sshd 决定连接超时之前发送的每个未确认的数据包。超时后,sshd 可以简单地保存未确认的数据包的内容以及发送到该术语的任何新数据,然后流式传输到使用适当 ID 连接的客户端。

为 ssh 添加具有此行为(无论如何实现)的选项/包装器是否可行(或者是否已经存在这样的选项)?当然,它无法处理诸如用户在超时和重新连接之间调整术语大小之类的奇特情况,但它可以做每个人都想要的事情让我重新连接到之前的 ssh 会话,而不会弄乱回滚、历史记录等。等等。

相关内容