Chaque nouvel utilisateur se connectant génère un nouveau sshd
session avec un PID spécifique. Vous pouvez utiliser pstree
pour imprimer quelles commandes sont héritées de quelles sshd
session, puis recoupez ce PID dans /var/log/auth.log
.
Exemple (anonymisé) :Je me suis connecté à un serveur distant avec 3 sessions simultanées, avec le même utilisateur distant. Je veux maintenant savoir de quelle adresse IP provient le client qui a exécuté la commande watch date
.
$ pstree -p | grep watch
| |-sshd(15243)---sshd(15342)---bash(15343)---watch(15450)
$ sudo grep 15243 /var/log/auth.log
Mar 7 15:37:29 XXXXXXXXXX sshd[15243]: Accepted publickey for XXXXXXXXXX from 12.34.56.78 port 48218 ssh2
Mar 7 15:37:29 XXXXXXXXXX sshd[15243]: pam_unix(sshd:session): session opened for user XXXXXXXXXX by (uid=0)
Mar 7 15:37:44 XXXXXXXXXX sudo: XXXXXXXXXX : TTY=pts/7 ; PWD=/home/XXXXXXXXXX ; USER=root ; COMMAND=/bin/grep 15243 /var/log/auth.log
pstree -p
montre que le watch
la commande est héritée de sshd
avec PID 15243. grep
ing pour ce PID en /var/auth/auth.log
indique que c'est l'IP 12.34.56.78 qui a démarré cette session. C'est donc aussi l'utilisateur qui a démarré watch
.
Quant à trouver history
pour cet utilisateur en particulier, cela ne peut pas être fait d'après ce que je peux voir lorsque tous les utilisateurs distants utilisent le même utilisateur SSH local. En outre, il peut facilement être usurpé/inactivé/etc., il n'est donc pas vraiment fiable. S'il est enregistré dans le fichier d'historique, vous pouvez simplement rechercher le cp
commande et regarde en arrière dans le fichier, mais s'il n'y est pas, alors il n'y a pas grand chose à faire.