重启后如何恢复 SSH 会话?

重启后如何恢复 SSH 会话?

许多网站都提到了screen,但在我看来,它screen支持用户在断开连接后返回 SSH 屏幕。

假设我正在通过 SSH 从我的笔记本电脑连接到服务器。现在我重新启动笔记本电脑。我可以恢复之前的 SSH 会话吗?

谢谢

答案1

通常,当您正常断开 SSH 连接时,服务器会收到通知。如果您在没有通知服务器的情况下消失,从技术上讲,您可以回到相同的 SSH 会话,只要您使用相同的一次性密钥并且还不算太晚。例如,当您的网络连接暂时断开并且目前没有数据传输时,可能会发生这种情况。重新建立网络连接后,SSH 可能会像什么都没发生一样工作。但是,如果任何一端尝试发送数据包并失败,则 SSH 软件(在此端)会理解存在“断开的管道”并正式关闭连接。

通常我们希望检测停滞的连接,而不是无限期地保持它们。对于服务器和客户端,有几个选项可以提供帮助(请参阅这是我的另一个答案)。

假设您想在重新启动客户端后(误用)此现象。有一些(相当不优雅的)方法可以让您的 SSH 客户端在不通知服务器的情况下消失,但没有常规 SSH 客户端会在其会话之间存储一次性机密,并在下次连接到同一服务器时尝试使用它们而无需握手。它们在设计上是一次性的。此外,TCP 层非常复杂且有状态,因此您需要存储和恢复更多内容才能欺骗服务器。这些不是标准方法;协议不是为此类技巧而设计的。

我认为你真的不需要进入同一个 SSH 会话。screen(或tmux)是进入同一个shell 会话(如果在远程端使用,请勿重复这个错误);通常就足够了。


如果你认为screen这不是解决方案你的情况但恢复 SSH 可能会,那么可能是XY 问题。如果是这样,请再问一个问题,告诉我们你真正想做什么。也许我们可以找到解决方案,但恢复相同的 SSH 会话不是解决方案。

相关内容