lastb 命令速查:查看 SSH 登录失败记录
lastb 列出登录失败记录,数据来自 /var/log/btmp——专记失败登录的二进制日志。排查 SSH 爆破、确认”最近谁在尝试登录”,从这条命令开始。以下用法与行为在 Rocky 9 容器实测:起了一台 sshd,用错误密码真实打了几次登录,输出全部来自这次复现。
基本用法
直接执行,每行一次失败登录:用户名、终端、来源地址、时间。容器里对 root 和 admin 各打一次错误密码,lastb 如实记下:

ssh:notty 表示 SSH 登录未获得终端,是爆破的典型特征——正常的交互登录会有 pts/N 终端名。来源列 ::1 是 IPv6 的 localhost,换成真实爆破场景,这一列就是形形色色的陌生公网 IP。
常用选项
| 选项 | 作用 | 示例 |
|---|---|---|
-n N / -N |
只显示最近 N 条(-1 是简写) |
lastb -n 5 |
-d |
IP 反解成主机名(查 PTR) | lastb -d |
-a |
主机名列放到最后 | lastb -a |
-F |
显示完整起止日期时间 | lastb -F |
-s / -t |
按起始/截止时间过滤 | lastb -s 20240101000000 |
-f FILE |
读其他文件(如轮转后的 btmp.1) | lastb -f /var/log/btmp.1 |
-R |
不显示主机名列 | lastb -R |
排查习惯:先 lastb -n 20 看最近的来源 IP,再统计高频来源。注意统计管道有个实测出来的小坑——lastb 输出末尾的 btmp begins ... 尾行会混进结果(配图2 里多出来的 1 btmp 就是它)。用 -n 限条数既能避开尾行,也能防止大文件刷屏,比裸管道更稳:

相关日志文件与命令
btmp 只记失败登录,登录日志是一组文件,各有分工:
| 文件 | 内容 | 对应命令 |
|---|---|---|
/var/log/btmp |
仅登录失败 | lastb |
/var/log/wtmp |
历史+当前登录(utmp 的归档) | last |
/var/run/utmp |
当前在线用户、开机时间 | uptime、who |
另有两个相关命令:
| 命令 | 一句话作用 |
|---|---|
lastlog |
每个用户最近一次登录的时间与来源 |
utmpdump |
把 btmp/wtmp 二进制转成文本(反向 -r 可写回) |
分不清两条记录走了哪个账,用实测对照记:错误密码的尝试进 btmp(lastb 可见),成功登录进 wtmp(last 可见)。配图2 里 testu 成功登录后 last 出现 pts/1 记录,和 lastb 里的 ssh:notty 形成对照。
陷阱提示
- btmp 可能非常大:爆破严重的机器上几天就能堆出上 GB,先
-n限条数,别全量输出到终端。 - 需要 root 权限:btmp 默认
0660 root:utmp(实测stat -c '%a %U:%G'确认),普通用户跑lastb读不到数据。 - 统计别忘尾行:
btmp begins ...尾行和末尾空行会混进 awk 统计,-n限条数或先grep -v '^btmp'再统计。 - 失败多 ≠ 被入侵:公网机器有失败记录是常态,持续的陌生 IP 高频失败才值得处理——配上 fail2ban 之类的自动封禁,并检查
last确认有没有成功登录。
本文由作者 2020-2024 年间的 CSDN 博客文章重构而来,原发布于 CSDN。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 张鹏的博客!
评论