Linux服务器用户会话管理:查看登录用户与强制踢出挂死会话
为什么要关注用户会话?
当多个人使用同一台Linux服务器时,难免出现有人终端断开但进程还在、或者某个用户占用过多资源的情况。
做好Linux服务器用户会话管理,既能快速释放资源,也能防止未授权操作。
本文用最直白的方式带你走一遍完整流程。
用三条命令看清当前谁在登录
打开终端并SSH到服务器后,先执行下面三条命令之一:
w:输出当前在线用户、登录时间、当前执行的命令、负载等。who:只显示用户名、终端、登录时间。last:列出历史登录记录,包括仍在线和已退出的会话。
# 查看在线用户及活动
w
# 示例输出片段
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.1.100 09:15 0.00s 0.05s 0.05s -bash
重点看 IDLE 列,如果某个用户已经空闲很久(比如3d),说明会话可能挂死了。
强制踢出挂死用户
遇到忘记退出的会话,不要直接重启服务器。
用 pkill 杀死对应进程即可:
# 踢出用户名为 testuser 的所有会话
sudo pkill -KILL -u testuser
如果想只踢掉某个特定终端(如pts/1),先用 who 找到该终端的PID(需要先查看 ps aux 关联的进程),或者直接用 skill:
# 踢掉 pts/1 上的用户(需要安装 util-linux)
skill -KILL -t pts/1
注意:pkill -u 会杀掉该用户所有进程,包括正在运行的业务进程。
如果只是想断开多余会话,建议先确认该用户没有正在运行的重要任务。
限制用户同时登录数量
如果你希望相同用户最多只能同时登录N个会话,修改 /etc/security/limits.conf 文件。
例如限制 webuser 最多2个会话:
echo "webuser hard maxlogins 2" >> /etc/security/limits.conf
修改后该用户新登录时会立即生效(已有会话不受影响)。
如果使用宝塔面板,可以在“SSH - 安全管理 - 登录限制”中快速设置。
避坑与高频问题
1. 踢掉用户后对方还能重新连接?
是的,除非同时改了密码或配置了pam_limits防护。
建议在踢出前确认对方是否为合法操作。
2. pkill 报错“no process found”
先运行 pgrep -u 用户名 确认有没有进程,如果检查到用户已经退出,说明会话早消失了。
3. 修改limits.conf后不生效?
检查/etc/pam.d/common-session(Ubuntu/Debian)或/etc/pam.d/sshd中是否包含 session required pam_limits.so,
没有就加上。
4. 如何查看历史登录记录中有异常IP?
使用last -i可以显示来源IP,配合lastb查看失败登录尝试。
验证你的操作是否生效
- 查看在线用户:执行
who,确认你期望踢出的用户已不在列表里。 - 测试并发限制:用两个SSH窗口同时以受限用户登录,第三个窗口会提示“Too many logins”。
- 检查系统日志:
journalctl -u sshd | tail -20里可以看到用户登录/断开记录。
如果你正在处理Linux服务器用户会话管理,建议先按以上步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。