journalctl 查看 sshd 日志
当认证日志文件不可用(被轮转清理、系统未安装传统 syslog 或只保留了部分记录)时,可以通过 systemd 单元过滤 journald 拿到同样的登录记录。要注意单元名在发行版之间不同:Debian 系常为 ssh,RHEL 系为 sshd,先用 systemctl list-units 确认再检索,否则容易得到空结果。
基本信息
| 检索命令 | journalctl -u ssh,或 journalctl -u sshd |
|---|---|
| 单元名确认 | systemctl list-units --type=service | grep -i ssh |
| 时间过滤 | --since 与 --until 支持日期、时间与自然语言表达 |
| 输出格式 | -o short-iso 带时区偏移,-o short-precise 提高时间精度 |
| 持久化 | 默认可能只保存在内存,重启后即丢失 |
典型使用场景
- 认证日志文件被轮转或清理后仍要回溯登录记录
- 按时间窗精确检索某次登录前后的相关事件
- 与认证日志对照,验证两个来源的记录是否一致
- 排查服务重启或配置重载造成的记录中断
- 导出证据时保留时区与时间精度信息
查看 sshd 日志
查看 sshd 日志
systemctl list-units --type=service | grep -i ssh # 先确认单元名
journalctl -u ssh --since '2026-01-01' --until '2026-01-02 00:00' -o short-iso | tail -50
journalctl -u ssh -o short-precise -n 20 # 提高时间精度看最近记录
journalctl --disk-usage # 查看日志占用与保留规模
journalctl -u ssh --since today | grep -E 'Accepted|Failed|Invalid'常用选项
| 选项 | 作用 | 注意点 |
|---|---|---|
| -u 单元名 | 只看指定服务的记录 | 单元名随发行版不同,需先确认 |
| --since 与 --until | 限定检索时间窗 | 按系统本地时间解释,不含时区标注 |
| -o short-iso | 输出带偏移的时间 | 跨主机对齐时间线时更安全 |
| -o short-precise | 提高时间精度 | 用于秒内事件的先后排序 |
journald 的日志可能只保存在内存(易失性存储)中,重启后即丢失。重要事件的检索与导出要在现场尽快完成,并把导出时间、命令与来源一并记入取证日志。journalctl 还支持按启动实例过滤,用 -b 或 --list-boots 定位重启前后的记录边界;未持久化保存的那一次启动,日志会整体缺失,这个缺口要在时间线上单独标出。
系统同时写入传统认证日志与 journald 时,两边内容一致属于互相印证;出现不一致时先核对时间基准与采集方式,再判断是否存在日志被清理或服务被重启的情况。