我有一台运行服务的 ubuntu 14.04 服务器,目前正在设置一些日志可视化,但我注意到我的 /var/log/auth.log 是空的。
我以为不会有太多影响,因为我已禁用除使用 ssh 密钥之外的 ssh 连接。但是,我确实希望有 sshd 日志。我是否在其他地方可以看到使用 ssh 密钥的登录,或者是否发生了我不知道的其他事情?
我的最终目标是记录每次有人尝试使用密钥或不使用密钥登录的情况。
编辑1
我看到有 auth.log 备份,但它们没有记录 ssh 尝试,也没有记录使用密钥的成功 ssh 登录。它们只显示 CRON 作业。
我还将 sshd_config 日志级别从 INFO 提升为 VERBOSE。
答案1
在 Ubuntu 系统中rsyslog处理系统日志,根据其配置将几个守护进程(如 sshd)的输出重定向到它们各自的日志。
有几个配置文件可能会影响日志文件的使用。我将从调试 rsyslog 开始,首先检查其配置在/etc/rsyslog.d(更可能是 50-default.conf)并寻找以下行应该看起来像这样:
auth,authpriv.* /var/log/auth.log
如果没有设置为/var/log/auth.log,那么您就发现了问题,输出到其他地方了。如果没有...
接下来,检查rsyslog 正在运行使用systemctl status rsyslog
,如果不是,则可能是某些东西禁用了它或者它甚至不存在作为服务,您可以使用重新启用(如果它存在)守护进程systemctl enable rsyslog
。
此外,你的sshd 配置可能是完全禁用日志记录或覆盖 rsyslog 的配置,请检查SyslogFacility
你的sshd 配置文件,这可能会将邮件重定向到另一个 rsyslog 工具,默认情况下应该是AUTH
(如第一步配置中的行)。当然,LogLevel
也很重要,但您已将其放入VERBOSE
,因此这应该不是问题。
对于调试 sshd,您可以尝试使用 将其置于调试模式-d
,如男人:
调试模式。服务器将详细的调试输出发送到标准错误,而不会将自身置于后台。服务器也不会分叉,并且只会处理一个连接。此选项仅用于服务器的调试。多个 -d 选项可提高调试级别。最大为 3。
是小心在调整 sshd 时如果您处于 sshd 连接上,您最终可能会被锁定在远程机器上。
答案2
另一个原因可能是文件所有权错误。
检查文件的所有权 - /var/log/auth.log
如果它不属于 syslog:adm ,则将其更改为 syslog:adm
sudo chown syslog:adm /var/log/auth.log
这帮我解决了 Ubuntu 中的问题。
答案3
如果你没有 rsyslog,可能是因为你的 ubuntu 是“最小化”的,登录的时候一般会看到这样的信息:
通过删除用户未登录的系统上不需要的软件包和内容,该系统已被最小化。
要恢复此内容,您可以运行“取消最小化”命令。
因此只需运行unminimize
并确认即可。