📜  在 Linux 中断开非活动的 SSH 连接(1)

📅  最后修改于: 2023-12-03 15:07:43.345000             🧑  作者: Mango

在 Linux 中断开非活动的 SSH 连接

在 Linux 中,经常会遇到连接远程服务器的需求,而 SSH (Secure Shell) 是当前最常用的远程连接协议之一。SSH 连接经常会面临一个问题 - 即连接限制时间(timeout)的问题,如果 SSH 连接保持静止不动很长时间(通常是几分钟),连接将超时关闭。本文将介绍如何在 Linux 中解决这个问题并断开非活动的 SSH 连接。

在服务器上配置 SSH 长时间不活动的超时断开时间

可以通过在服务器上的 /etc/ssh/sshd_config 配置文件中设置 ClientAliveIntervalClientAliveCountMax 来解决这个问题。其中 ClientAliveInterval 表示发送确认包的时间间隔,单位为秒;而 ClientAliveCountMax 表示发送几次确认包后自动断开连接。例如,如果你想设置超时时间为 10 分钟,你可以在该文件中设置如下参数:

ClientAliveInterval 600
ClientAliveCountMax 0

此配置将每隔 10 分钟发送一个确认包,并一直保持连接不会自动断开,除非客户端手动断开连接。

手动检查并断开非活动的 SSH 连接

如果你已经有了一堆非活动的 SSH 连接,你可以使用 who 命令来查看这些连接,查看它们的状态和时间:

$ who
user1   pts/0        2022-02-22 11:00 (192.168.1.102)
user2   pts/1        2022-02-22 11:20 (192.168.1.103)
user3   pts/2        2022-02-22 11:30 (192.168.1.104)

可以看到每个连接的用户名、pts(伪终端)编号、最后一次活动时间和来源 IP 地址。

接下来,可以使用 w 命令来查看每个连接的详细信息(包括已经运行的命令、CPU 使用率等):

$ w
 11:34:03 up  2:30,  1 user,  load average: 0.12, 0.03, 0.01
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
user1    pts/0    192.168.1.102    11:00    2.00s  0.02s  0.00s w
user2    pts/1    192.168.1.103    11:20    1.00m  0.02s  0.00s top
user3    pts/2    192.168.1.104    11:30    6.00m  0.02s  0.00s bash

最后,可以使用 pkill 命令来断开特定的 SSH 连接。例如,如果你想断开上面例子中的 pts/2 连接,可以执行以下命令:

$ pkill -9 -t pts/2

这将中止作业并断开此终端会话。

结论

在本文中,我们介绍了如何在 Linux 中处理长时间不活动的 SSH 连接的问题,以及如何查找和断开这些连接。通过对 SSH 的配置和使用,你可以更好地管理服务器,并确保资源得到有效使用。