如何关闭一个不活动的或者空闲的 SSH 会话
创始人
2024-03-01 20:06:59
0

让我们来假设一下,当你通过 ssh 在服务器上工作时,由于网络、电源或者是本地 PC 重启等原因会导致你的会话连接断开。

你可能会再次登录服务器继续工作也可能不会,但是你始终会留下之前没有关闭的 ssh 会话。

如何关闭一个不活动的 ssh 会话?首先使用 w 命令来识别出不活动或者是空闲的 ssh 会话,接着使用 pstree 命令来获取空闲会话的 PID,最后就是使用 kill 命令来关闭会话了。

如何识别不活动的或者是空闲的 SSH 会话

登录系统通过 w 命令来查看当前有多少用户登录着。如果你识别出了自己的会话连接就可以记下其它不活动或者是空闲的 ssh 会话去关闭。

在我当前的例子中,能看见两个用户登录着,其中一个是我当前在执行 w 命令的 ssh 会话另一个就是之前的空闲会话了。

# w
 10:36:39 up 26 days, 20:29,  2 users,  load average: 0.00, 0.02, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    219.91.219.14    10:34   28.00s  0.00s  0.00s -bash
root     pts/2    219.91.219.14    10:36    0.00s  0.00s  0.00s w

如何获取 SSH 会话的 PID

为了关闭空闲的 ssh 会话,我们需要空闲会话进程的父进程的 PID。我们可以执行 pstree 命令来查看包括了所有进程的树状图,以便获取父进程的 pid。

你会获得与下方示例中相似的输出。pstree 命令的输出会比这个多得多,为了更好的理解我删去了许多不相关的内容。

# pstree -p
init(1)-+-abrtd(2131)
        |-acpid(1958)
        |-httpd(32413)-+-httpd(32442)
        |
    |-mingetty(2198)
        |-mysqld_safe(24298)---mysqld(24376)-+-{mysqld}(24378)
        |
        |-php(32456)-+-php(32457)
        |
        |-sshd(2023)-+-sshd(10132)---bash(10136)
        |            `-sshd(10199)---bash(10208)---pstree(10226)
        |-udevd(774)-+-udevd(2191)
                     `-udevd(27282)

从上方的输出中,你可以看到 sshd 进程与分支的树形图。sshd 的主进程是 sshd(2023),另两个分支分别为 sshd(10132)sshd(10199)

跟我在文章开始讲的相同,其中一个是我新的会话连接 sshd(10199) 它展示了我正在执行的 pstree 命令,因此空闲会话是另一个进程为 sshd(10132)

如何关闭空闲 SSH 会话

我们已经获得了有关空闲会话的所有信息。那么,就让我们来使用 kill 命令来关闭空闲会话。请确认你将下方的 PID 替换成了你服务器上的空闲会话 PID。

# kill -9 10132

(LCTT 译注:这里介绍另一个工具 pkill,使用 pkill -t pts/0 -kill 就可以关闭会话, debian 8 下可用,有些版本似乎需要更改 -kill 的位置)

再次查看空闲会话是否已经被关闭

再次使用 w 命令来查看空闲会话是否已经被关闭。没错,只有那个我自己的当前会话还在,因此那个空闲会话已经被关闭了。

# w
 10:40:18 up 26 days, 20:33,  1 user,  load average: 0.11, 0.04, 0.01
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/2    219.91.219.14    10:36    0.00s  0.00s  0.00s w

再次使用 pstree 命令检查

再次使用 pstree 命令确认。是的,只有那个我自己的 ssh 会话还在。

# pstree -p
init(1)-+-abrtd(2131)
        |-acpid(1958)
        |
        |-httpd(32413)-+-httpd(32442)
        |
        |-mingetty(2198)
        |-mysqld_safe(24298)---mysqld(24376)-+-{mysqld}(24378)
        |
        |-php(32456)-+-php(32457)
        |
        |-sshd(2023)---sshd(10199)---bash(10208)---pstree(10431)
        |-udevd(774)-+-udevd(2191)
                     `-udevd(27282)

via: http://www.2daygeek.com/kill-inactive-idle-ssh-sessions/

作者:Magesh Maruthamuthu 译者:wcnnbdk1 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

SSH

相关内容

ssh 登录超时 expe...
ssh -p 22 root@192.168.1.1 -v...
2025-05-29 15:17:15
添加已有的PublicKe...
mkdir -p ~/.ssh/ To overwrite aut...
2025-05-29 06:01:59
不需要SSH连接远程Mon...
要不需要SSH连接远程MongoDB服务器,可以使用以下方法之一:...
2025-01-10 15:00:48
不同操作系统的客户端与SS...
不同操作系统的客户端与SSH服务器的行为不同:分段错误可能是由于操...
2025-01-08 09:00:54
不使用添加的SSH密钥在n...
在nushell中使用Git时,如果你没有使用添加SSH密钥的权限...
2024-12-29 11:30:55
不使用SSH从远程机器触发...
要从远程机器触发一个Python脚本,而不使用SSH,可以使用以下...
2024-12-29 10:31:02

热门资讯

“Linux 中国” 开源社区... 这是一个艰难的决定 —— 这不是调侃,而是当你真正做出改变了你十几年生活轨迹的决定时,你就会明白这个...
硬核观察 #1263 德国铁路... #1 德国铁路公司招聘 Windows for Workgroups 3.11 管理员该职位要求了解...
人工智能教程(七):Sciki... 在本系列的 上一篇文章 中,我们用 TensorFlow 构建了第一个神经网络,然后还通过 Kera...
关闭 WSL 中正在运行的 L... 以下是使用 WSL 关闭在 Windows 内运行的 Linux 系统的不同方法。你使用 WSL 在...
MX Linux 23.2 “... 最新的 MX Linux 23.2 小版本更新带来了基本的改进和新增功能。MX Linux 推出了 ...
硬核观察 #1262 网络上最... #1 网络上最古老的软件存档库之一即将关闭美国新墨西哥州立大学(NMSU)最近宣布,即将于 2024...
如何在 RHEL 上通过绑定配... 在 Linux 中,你可以根据自己的需要创建高级网络设置,如 网络绑定 Network Bondin...
Linux Matrix 消息... Matrix 用户可以升级 Fractal 6 了!Fractal 是目前 最好的 Matrix 客...
如何通过 VLC 使用字幕 使用 VLC 媒体播放器播放和管理字幕的新手指南。我是一个超级动漫迷,如果你想观看最新的剧集,那么你...
硬核观察 #1261 X 计划... #1 X 计划在奥斯汀建立内容审核总部据报道,该部门将招聘 100 名全职员工,将主要关注 CSE ...