📅  最后修改于: 2023-12-03 15:07:43.345000             🧑  作者: Mango
在 Linux 中,经常会遇到连接远程服务器的需求,而 SSH (Secure Shell) 是当前最常用的远程连接协议之一。SSH 连接经常会面临一个问题 - 即连接限制时间(timeout)的问题,如果 SSH 连接保持静止不动很长时间(通常是几分钟),连接将超时关闭。本文将介绍如何在 Linux 中解决这个问题并断开非活动的 SSH 连接。
可以通过在服务器上的 /etc/ssh/sshd_config
配置文件中设置 ClientAliveInterval
和 ClientAliveCountMax
来解决这个问题。其中 ClientAliveInterval
表示发送确认包的时间间隔,单位为秒;而 ClientAliveCountMax
表示发送几次确认包后自动断开连接。例如,如果你想设置超时时间为 10 分钟,你可以在该文件中设置如下参数:
ClientAliveInterval 600
ClientAliveCountMax 0
此配置将每隔 10 分钟发送一个确认包,并一直保持连接不会自动断开,除非客户端手动断开连接。
如果你已经有了一堆非活动的 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 的配置和使用,你可以更好地管理服务器,并确保资源得到有效使用。