SSH 连接如何变为非活动状态?

SSH 连接如何变为非活动状态?

我已经设置了 SSH 连接来在远程服务器上运行程序。该程序每 10 秒在终端上打印一次调试信息。如果我让 SSH 窗口长时间打开(例如 10 小时),SSH 连接是否会变得不活动? SSH 会话中的活动如何定义?我应该每 x 秒键入/运行命令以保持会话活动吗?

答案1

您不需要做任何特殊的事情,SSH 不会因为不活动而终止连接。所以没有定义不活动期之内SSH。

然而,您和服务器之间的网络路由上的其中一个设备可能会丢失路由,并且对于该活动,从一侧通常就足够了,但并非总是如此(有“到达确认包”、确认、从服务器返回到服务器)使用 TCP 时的客户端)。
来自双方的流量并不能保证持续的连接,如果您有 DSL 调制解调器并且您的提供商决定您每天获得一个新的 IP 地址,则连接将会中断。

您可以让您的客户端定期发送一些数据包,方法是插入

ServerAliveInterval 5

除了每 10 秒来自服务器的流量之外,每 5 秒还有一些客户端到服务器的流量/etc/ssh/ssh_config~/.ssh/config

DSL 调制解调器重置连接的更简单的“解决方案”是运行服务器端软件tmux或者screen:如果连接断开,您只需再次 SSH 到服务器,发出tmux attachscreen -r即可继续查看不间断的服务器程序。

如果您不太担心失去连接,而是担心失去连接会导致服务器程序停止,那么使用tmux/特别有用。screen为此,您还可以将原始程序的输出重定向到 file 并使用tail -f,但这不允许您轻松地与服务器程序交互(如果有必要的话)。tmuxscreen(以其基本形式)易于使用,但存在一些副作用,例如无法使用图形终端上的滑块向后滚动(您必须使用键盘快捷键让服务器在其缓冲区中向后滚动)那)。

针对中断连接的设备,更灵活的解决方案是使用mosh。这使用 SSH 交换一些秘密信息,然后即使一个或两个 IP 地址发生变化也允许重新连接。然而,这更难以设置和开始工作。

在您的情况下,我会从使用开始tmux,并在连接确实停用时手动重新连接。

答案2

另外,使用 SCREEN 命令确实很有帮助。这样您就可以运行任何命令,而不必担心您的 ssh 连接。

相关内容