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

Man*_*iAm 3 ssh timeout

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

Ant*_*hon 8

您不必做任何特别的事情,SSH 不会因为不活动而终止连接。所以,没有定义不活动的时间SSH。

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

您可以通过插入让您的客户端定期发送一些数据包

ServerAliveInterval 5
Run Code Online (Sandbox Code Playgroud)

/etc/ssh/ssh_config或您~/.ssh/config有一些客户端到服务器的流量每5秒除了来自服务器每隔10秒的流量。

DSL 调制解调器重置连接的更简单的“解决方案”是在tmuxor 中运行您的服务器端软件screen:如果连接中断,您只需再次通过 SSH 进入服务器,发出tmux attachorscreen -r并且您可以继续查看不间断的服务器程序。

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

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

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