我的 sshd 日志在哪里?

HXC*_*ine 76 logs arch-linux openssh sshd

我在标准位置找不到我的 sshd 日志。

我试过的:

  • 不在 /var/log/auth.log
  • 不在 /var/log/secure
  • 系统搜索了'auth.log'没有发现
  • 我已经设置/etc/ssh/sshd_config为显式使用SyslogFacility AUTHLogLevel INFO重新启动 sshd,但仍然找不到它们。

我在 Arch Linux 上使用 OpenSSH 6.5p1-2。

小智 66

试试这个命令从 systemctl 查看日志:

journalctl -u sshd |tail -100
Run Code Online (Sandbox Code Playgroud)

  • 这似乎不起作用,但是 `journalctl _COMM=sshd` 可以。 (37认同)
  • 您可以使用 `-f` 选项来跟踪日志:`journalctl -fu sshd` (6认同)
  • 啊,是的 - systemctl 像往常一样完全一致和可预测。 (4认同)
  • `journalctl -t sshd -e` (2认同)

小智 35

查看日志最后一部分的更好方法是:

journalctl -u sshd -n 100
Run Code Online (Sandbox Code Playgroud)

使用tail上的输出journalctl可能会很慢。在我尝试过的机器上花了 5 分钟,而上述命令立即返回。

  • 而且您不会丢失线条着色!应该是顶级解决方案imo (3认同)

Tom*_*art 17

您应该能够sshd使用以下方式过滤消息:

journalctl -u ssh
Run Code Online (Sandbox Code Playgroud)

或(取决于您的发行版)

journalctl -u sshd
Run Code Online (Sandbox Code Playgroud)

它将以less样式格式显示日志(您可以/通过 PgUp、PgDown 等进行搜索、导航)。

  • -e 将您带到日志的末尾。
  • -u参数过滤元字段_SYSTEMD_UNIT(至少在 Debian 上)设置为ssh.service,因此sshd不会匹配。
  • -f 实时跟踪日志
  • -n 100显示给定的行数(对 有用-f

或者,您可以使用元字段过滤:

journalctl _COMM=sshd
Run Code Online (Sandbox Code Playgroud)

您可以通过导出为 JSON 来显示包含所有元字段的整个日志记录:

journalctl -u ssh -o json-pretty
Run Code Online (Sandbox Code Playgroud)

那会给你类似的东西:

    ...
    "_PID" : "7373",
    "_COMM" : "sshd",
    "_EXE" : "/usr/sbin/sshd",
    "_SYSTEMD_CGROUP" : "/system.slice/ssh.service",
    "_SYSTEMD_UNIT" : "ssh.service",
    ...
Run Code Online (Sandbox Code Playgroud)

如果您想知道如何仅显示内核消息:

journalctl -k -f
Run Code Online (Sandbox Code Playgroud)


HXC*_*ine 13

我在“journalctl”中找到了 sshd 和其他核心服务的输出。

在 systemd 的 Arch Wiki 条目中查看更多信息:

https://wiki.archlinux.org/index.php/Systemd/Journal