
Я хочу отслеживать сеансы 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. Пожалуйста, прокомментируйте, если там по-другому.
Надеюсь, это кому-нибудь поможет.