![我没有看到使用“journalctl -u sshd”的 SSH 断开事件](https://linux22.com/image/786325/%E6%88%91%E6%B2%A1%E6%9C%89%E7%9C%8B%E5%88%B0%E4%BD%BF%E7%94%A8%E2%80%9Cjournalctl%20-u%20sshd%E2%80%9D%E7%9A%84%20SSH%20%E6%96%AD%E5%BC%80%E4%BA%8B%E4%BB%B6.png)
我想监视 SSH 会话,包括登录和注销事件。当我journalctl
不带任何标志运行时,我会看到两个登录事件,如下所示:
Accepted publickey for root from 192.168.1.24 port 56464
以及注销事件,例如:
Disconnected from user root 192.168.1.24 port 56464
但是当我想减少输出并仅过滤sshd
我运行的事件时journalctl -u sshd
。在这种情况下,我只会看到Accepted publickey
事件,但看不到Disconnected from user
事件。
答案1
TL;DR:journalctl -u sshd
您应该使用journalctl -t sshd
。
为了弄清这一点,我运行journalctl -o json-pretty
并分析了登录和注销事件。登录事件"_SYSTEMD_UNIT" : "sshd.service"
的 JSON 输出中有,因此当您使用 指定单位时,它们会显示出来-u sshd
。但注销事件有"_SYSTEMD_UNIT" : "session-27.scope"
,这就是为什么它们没有显示的原因-u sshd
。当然,每个 SSH 会话的会话号都不同。
什么是注销和登录事件的共同点是,"SYSLOG_IDENTIFIER" : "sshd"
这意味着我们必须使用-t
标志(或长格式--identifier
)来指定标识符。
这是在 Fedora 和 RHEL 上。我还没有在 Debian/Ubuntu 上测试过。如果那里有不同,请评论。
我希望这对某人有帮助。