
Quero monitorar sessões SSH, incluindo eventos de login e logout. Quando executo journalctl
sem sinalizadores, vejo os dois eventos de login como:
Accepted publickey for root from 192.168.1.24 port 56464
e eventos de logout como:
Disconnected from user root 192.168.1.24 port 56464
Mas quando quero reduzir a saída e filtrar apenas os sshd
eventos que executo journalctl -u sshd
. Neste caso vejo apenas os Accepted publickey
eventos, mas não os Disconnected from user
eventos.
Responder1
TL;DR: Em vez de journalctl -u sshd
você deve usar journalctl -t sshd
.
Para descobrir isso, executei journalctl -o json-pretty
e analisei eventos de login e logout. Os eventos de login possuem "_SYSTEMD_UNIT" : "sshd.service"
saída JSON, portanto, eles aparecem quando você especifica a unidade com -u sshd
. Mas os eventos de logout têm "_SYSTEMD_UNIT" : "session-27.scope"
e é por isso que não são mostrados para -u sshd
. Obviamente, o número da sessão é diferente para cada sessão SSH.
O queécomum para eventos de logout e login é "SYSLOG_IDENTIFIER" : "sshd"
o que significa que temos que usar o -t
sinalizador (ou formato longo --identifier
) para especificar o identificador.
Isso está no Fedora e no RHEL. Ainda não testei no Debian/Ubuntu. Por favor, comente se é diferente lá.
Espero que isso ajude alguém.