journalctl -M 仅能查看本地挂载的远程日志目录,不支持直接网络访问;需先通过 systemd-journal-upload 推送、systemd-journal-remote 接收并落地为标准 journal 目录后,方可使用 -M 指定路径查询。

journalctl -M 本身不能直接查看远程主机日志,它只支持读取本地已挂载的 systemd journal 目录(如通过 systemd-journal-remote 拉取并本地存储的日志),不提供原生网络连接或 SSH 透传功能。
必须先配置远程日志接收服务
要实现跨机器审计,需在目标主机(被审计端)启用日志转发,在中心主机(审计端)部署接收服务:
- 被审计主机启用
systemd-journal-upload,将日志持续推送至中心主机的systemd-journal-remoteHTTP/HTTPS 端点(默认端口 19531) - 中心主机运行
systemd-journal-remote --listen-http=-或启用systemd-journal-remote.socket,接收并保存为本地 journal 文件(如/var/log/journal/remote-hostname/) - 确保防火墙放行对应端口,且 TLS(推荐)或预共享密钥配置正确
用 journalctl -M 查看已接收的远程日志
当日志成功接收并落地为标准 journal 目录结构后,可使用 -M 指向该目录:
- 假设中心主机已将 host-a 的日志存于
/var/log/journal/remote-host-a/ - 执行:
journalctl -M /var/log/journal/remote-host-a - 支持所有常规选项:按时间过滤(
--since "2024-01-01")、服务单位(-u sshd)、优先级(-p err)等
替代方案:实时 SSH 调用远程 journalctl(轻量但非集中审计)
若无需长期归档,仅临时排查,可跳过远程服务部署,直接 SSH 执行:
-
ssh user@host-a 'journalctl -n 100 --no-pager'(查看最近 100 行) -
ssh user@host-a 'journalctl -u nginx --since today' | less(按服务+时间过滤) - 注意:依赖远程主机 root 权限或
systemd-journal用户组权限,且无法聚合多机日志
关键注意事项
跨机器审计需关注三点:
-
时钟同步:所有主机必须运行
chrony或ntpd,否则时间戳错乱导致关联分析失败 -
日志完整性:启用
Storage=persistent和ForwardToJournal=yes,避免重启丢日志 -
权限与存储路径:
journalctl -M需对目标 journal 目录有读取权限;建议用专用用户管理远程日志目录,避免混用/var/log/journal


















