我的sshd日志在哪里?


57

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

我尝试过的

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

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

Answers:


50

尝试使用以下命令从systemctl查看日志:

journalctl -u sshd |tail -100

20
这似乎不起作用,但是journalctl _COMM=sshd可以。
wingedsubmariner 2014年

3
嗯,是的-systemctl与往常一样完全一致且可预测。
g33kz0r 2015年

3
您可以使用该-f选项来跟踪日志:journalctl -fu sshd
bzeaman '16

wingedsubmariner-我知道已经快4年了,但是...你还记得当时的发行版吗?我怀疑您发行版中的单位文件被称为“ openssh”或仅仅是“ ssh”而不是“ sshd”。systemd项目的问题是他们认为发行版是他们的用户,发行版可以随意使用他们想要的单位文件名称(例如Debian调用apache的网络服务器,apache2而RedHat调用它httpd)。
bobpaul

24

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

journalctl -u sshd -n 100

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


3
而且您不会丢失线条着色!应该是最佳解决方案imo
kuzyn


7

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

journalctl -u ssh

或(取决于您的分布)

journalctl -u sshd

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

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

另外,您可以使用元字段过滤:

journalctl _COMM=sshd

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

journalctl -u ssh -o json-pretty

那会给你类似的东西:

    ...
    "_PID" : "7373",
    "_COMM" : "sshd",
    "_EXE" : "/usr/sbin/sshd",
    "_SYSTEMD_CGROUP" : "/system.slice/ssh.service",
    "_SYSTEMD_UNIT" : "ssh.service",
    ...

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

journalctl -k -f

您对这种奇怪的语法(journalctl _COMM=sshd)有解释吗?
Ortomala Lokni,

@OrtomalaLokni -u过滤_SYSTEMD_UNITDebian上设置为的元数据字段ssh.service。所有以下划线开头的参数都在访问metafiels。您可以通过类似的方式通过_PID或进行过滤_TRANSPORT
Tombart '18年

1

查看您的syslog配置。大多数probalby /etc/syslog.conf/etc/rsyslog.conf 您应该auth在例如我的配置中查找行:

auth,authpriv.* /var/log/auth.log

*.*;auth,authpriv.none -/var/log/syslog


4
这些文件都不存在。我相信这些文件是由syslog-ng创建的,而Arch已将其替换为systemd
HXCaine 2014年

在Scientific Linux中,authpriv。*指向authpriv.* /var/log/secure文件内部 /etc/rsyslog.conf
Salem F
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.