Linux会话管理踢出异常账号:Linux踢出异常账号实操指
为什么要及时踢出异常账号
服务器被多人共用时,难免会遇到有人登录后忘记退出,或者出现了疑似被入侵的陌生会话。
如果不及时清理,不仅占用连接数,还可能带来安全风险。踢出异常账号是每个服务器管理员必须掌握的基本操作,本文让你从零学会它。
准备工作:确认你的操作权限
踢人需要管理员权限,请确认你满足以下条件之一:
- 当前是 root 用户(直接有最高权限)。
- 拥有 sudo 权限(执行命令时加 sudo)。
可以用命令 whoami 查看当前身份,用 sudo -l 检查能执行哪些指令。
如果提示“不在 sudoers 文件中”,请先联系服务器的超级管理员授权。
第一步:查看当前所有登录会话
打开终端,执行以下两条命令之一:
who
或者
w
输出示例:
user1 pts/0 2025-04-07 09:15 (192.168.1.100)
user2 pts/1 2025-04-07 10:30 (10.0.0.5)
attacker pts/2 2025-04-07 10:45 (unknown)
每一行代表一个活跃的登录会话。pts/0、pts/1 是终端编号,括号里是来源IP。
你需要根据用户名、登录时间或IP判断哪个是异常账号。
第二步:强制踢出异常账号
找到异常会话后,用以下两种方法之一将其踢出:
方法一:通过终端编号(TTY)踢出
sudo pkill -9 -t pts/2
其中 pts/2 替换成你要踢的终端编号。-9 表示强行杀掉进程,-t 指定终端。
方法二:通过进程ID(PID)踢出
先获取异常会话的PID:
ps -t pts/2
输出示例:
PID TTY TIME CMD
1234 pts/2 00:00:00 bash
记下PID(这里是1234),然后执行:
sudo kill -9 1234
这样异常账号的登录会话就会被强制断开。
该用户会看到类似“Connection closed”的提示。
避坑指南:别误踢和防反弹
- 不要踢自己:执行
who或w时,注意查看自己的终端编号(通常是第一个,或者用echo $SSH_TTY查看自己的TTY)。如果把自己的会话踢掉,当前连接就会中断。 - 踢不掉怎么办:如果提示“No such process”,说明该会话已经自动结束。如果提示“Operation not permitted”,请确认你用了
sudo且拥有权限。 - 防止重复登录:被踢的用户可以重新登录。要彻底禁用某个账号,请使用
usermod -L 用户名锁定账号,或者修改/etc/ssh/sshd_config加入DenyUsers规则后重启sshd。 - 使用pkill注意范围:
pkill -9 -t pts/2会杀掉该终端下所有进程,包括可能正在运行的守护进程(如果它们绑定在该终端)。一般情况下没问题,但最好先确认该终端没有重要任务。
验证效果:确认异常账号已下线
踢完之后,再次执行 who 或 w,确认刚才的异常账号已经不在列表中:
who
# 应该看不到 pts/2 那行
也可以让被踢的用户尝试重新登录,观察是否正常(如果只是踢出未封禁,他会再次登录)。
如果想彻底封堵,参考上文“防止重复登录”。
高频问题解答
Q:没有sudo权限怎么办?
A:只能请管理员执行。你可以先使用 who 和 last 记录可疑会话信息,然后提交工单申请处理。
Q:踢出后用户还在?
A:检查是否用了 -9 信号,以及是否成功执行。可以用 ps aux | grep 用户名 查看该用户是否还有残留进程。
Q:如何一次性踢掉所有非root用户?
A:谨慎操作!可以用 who | grep -v root | awk '{print $2}' | xargs -I {} sudo pkill -9 -t {},但建议先手动确认。
通过以上步骤,你已经掌握了Linux会话管理踢出异常账号的核心技能。
日常维护中,建议定期使用 last 检查登录历史,并结合 fail2ban 等工具自动封禁暴力破解。
遇到问题时优先回到本文的避坑指南排查,基本都能解决。