可通过pkill -u username、kill -9 PID、w+ps+kill、loginctl terminate-session/terminate-user或清理utmp等五种方法强制终止Linux用户SSH会话,分别适用于批量下线、单会话终止、已知TTY、systemd环境及极端情况。

如果您需要在Linux系统中终止某个用户的SSH会话或强制使其登出,则可能是由于该用户长时间未操作、存在异常行为,或需执行系统维护任务。以下是实现该目标的多种方法:
一、通过pkill命令终止指定用户的全部进程
该方法利用pkill根据用户名匹配并终止其所有登录相关的进程(包括bash、ssh、screen等),从而强制用户下线。此操作会中断该用户所有终端会话及后台作业。
1、以root身份登录系统或切换至root用户。
2、执行命令:pkill -u username,将“username”替换为目标用户名。
3、验证是否已退出:运行who或w命令查看当前在线用户列表。
二、使用kill命令终止特定SSH会话进程
该方法针对单个SSH连接进行精准终止,适用于仅需踢出某次登录而保留用户其他会话的场景。需先获取对应sshd进程的PID。
1、执行ps aux | grep sshd,筛选出包含用户信息的sshd进程行。
2、识别目标会话的PID(第二列数值),通常对应于类似“sshd: user@pts/1”的进程。
3、执行kill -9 PID,其中PID为上一步查得的进程号。
三、通过w或who命令配合kill终止TTY会话
该方法基于用户所连接的终端设备(如pts/0、tty1)定位并终止其shell主进程,适用于已知登录终端编号的情况。
1、运行w命令,记录目标用户的TTY列值(例如pts/2)。
2、执行ps -t pts/2 | grep -v "ps" | awk '{print $1}'获取该终端下主shell进程PID。
3、执行kill -9 PID终止该shell进程。
四、使用loginctl命令管理systemd登录会话
该方法适用于启用systemd的现代Linux发行版(如CentOS 7+、Ubuntu 16.04+),可列出并终止基于logind的用户会话。
1、执行loginctl list-sessions,查看当前所有会话ID及其所属用户。
2、确认目标会话ID(如c1、c2)后,运行loginctl terminate-session c1。
3、若需终止某用户全部会话,使用loginctl terminate-user username。
五、直接删除utmp/wtmp记录并终止关联进程
该方法通过清除登录状态记录并同步杀死对应进程,确保系统不再识别该用户处于登录状态。操作需谨慎,建议仅在其他方法失效时使用。
1、执行who -u获取用户登录时间、终端与进程PID。
2、运行kill -9 PID终止显示的PID对应进程。
3、手动清理临时记录(可选):执行rm /var/run/utmp && touch /var/run/utmp && chmod 644 /var/run/utmp,随后重启rsyslog或systemd-logind服务以重建状态。










