journalctl是systemd日志系统的核心工具,用于查看包括用户登录/登出在内的所有系统事件;需启用持久化(创建/var/log/journal并重启systemd-journald)才能保留历史记录,常用筛选命令如journalctl _systemd_unit=systemd-logind.service、journalctl -u sshd | grep "accepted"等。

journalctl 是 systemd 日志系统的核心工具,能直接查看包括用户登录/登出在内的所有系统事件。默认情况下,这些记录由 systemd-logind.service 和 sshd(或 gdm、lightdm 等显示管理器)生成,并被持久化保存(需启用日志持久化)。
确认日志是否持久保存
journalctl 默认只保留内存中的日志(重启后丢失)。要查历史登录记录,必须开启持久日志:
- 创建日志存储目录:
sudo mkdir -p /var/log/journal - 重启 journald:
sudo systemctl restart systemd-journald - 验证是否生效:
journalctl --disk-usage应显示非零值
筛选用户登录与登出事件
登录/登出记录主要来自 systemd-logind 和认证服务(如 sshd)。常用命令如下:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- 查看所有登录会话(含 TTY、SSH、图形界面):
journalctl _SYSTEMD_UNIT=systemd-logind.service - 只看成功登录(含用户名和来源 IP):
journalctl -u sshd | grep "Accepted" - 只看登出或会话结束:
journalctl _SYSTEMD_UNIT=systemd-logind.service | grep -E "(Session|removed|closed)" - 按用户筛选(例如用户
alice):journalctl _UID=$(id -u alice)
按时间范围精准定位
结合时间参数快速定位异常或特定时段行为:
- 最近 1 小时的登录相关日志:
journalctl --since "1 hour ago" | grep -i "login\|session\|accepted\|closed" - 某天的全部登录活动:
journalctl --since "2024-05-20 00:00:00" --until "2024-05-20 23:59:59" -u systemd-logind - 实时跟踪新登录(类似 tail -f):
journalctl -u systemd-logind -f
识别关键字段与典型日志样例
理解原始日志内容有助于准确判断行为性质:
-
成功 SSH 登录:包含
Accepted password for alice from 192.168.1.100 port 54321 -
图形界面登录:出现
New session c1 of user alice和Session c1 logged out -
TTY 登录:含
Started Session c2 of user alice(对应/dev/tty1) -
失败尝试:查找
Failed password、Invalid user或PAM authentication error










