要查看Linux用户登录活动,需结合last(查成功登录)、lastb(查失败登录)、auth.log或secure日志(查认证细节)、journalctl(查systemd登录事件)及utmp/wtmp文件(查当前与历史会话状态)。

如果您需要了解 Linux 系统中用户的登录活动,例如谁在何时通过何种方式(SSH、本地终端、图形界面)登录过系统,则需查阅系统记录的认证与会话日志。以下是查看登录日志的具体步骤:
一、使用 last 命令查看最近成功登录记录
last 命令从 /var/log/wtmp 文件中读取已终止的登录会话信息,显示包括用户名、终端、IP 地址、登录和登出时间等详细内容。
1、打开终端,输入命令:last。
2、如需限制输出行数,可追加 -n 参数,例如:last -n 20 查看最近 20 条记录。
3、如需筛选特定用户,可在命令后添加用户名,例如:last john。
二、使用 lastb 命令查看失败登录尝试
lastb 命令读取 /var/log/btmp 文件,专门用于展示所有失败的登录尝试(如密码错误、无效用户),该文件默认仅 root 用户可读。
1、切换至 root 用户或使用 sudo 执行:sudo lastb。
2、限制输出数量示例:sudo lastb -n 15。
3、检查某 IP 的失败记录,可结合 grep 使用:sudo lastb | grep '192.168.1.100'。
三、直接查看 auth.log 或 secure 日志文件
系统认证事件(包括 SSH 登录、su 切换、sudo 操作等)被记录在 /var/log/auth.log(Debian/Ubuntu)或 /var/log/secure(RHEL/CentOS/Fedora)中,内容实时性强且包含详细上下文。
1、确认日志路径:运行 ls -l /var/log/auth.log /var/log/secure 2>/dev/null 查看哪个文件存在。
2、查看最近 50 行 SSH 登录相关记录:sudo tail -n 50 /var/log/auth.log | grep 'sshd.*Accepted\|sshd.*Failed'(Ubuntu)。
3、查看所有包含登录关键词的条目:sudo grep -i 'login\|logon\|session' /var/log/secure(CentOS)。
四、使用 journalctl 查看 systemd 日志中的登录事件
对于使用 systemd 的现代 Linux 发行版,登录事件也被记录在 journald 中,支持按服务、用户、时间范围精确过滤。
1、查看所有与登录相关的消息:sudo journalctl _COMM=login。
2、查看 SSH 登录事件:sudo journalctl _COMM=sshd | grep 'Accepted\|Failed'。
3、查看指定用户最近 1 小时内的登录活动:sudo journalctl _UID=$(id -u username) --since "1 hour ago" | grep 'session opened'。
五、检查 utmp 和 wtmp 文件的原始状态
utmp 记录当前活跃会话(如 who、w 命令数据来源),wtmp 记录历史会话(last 命令数据来源),二者为二进制格式,需用专用工具解析。
1、查看当前登录用户列表:who 或 w。
2、检查 wtmp 文件最后修改时间以确认其是否更新:stat /var/log/wtmp。
3、若需人工验证 wtmp 内容完整性,可运行:sudo strings /var/log/wtmp | head -n 10(仅作粗略参考,不可替代 last)。

















