Кожен новий користувач, який підключається, породжує новий sshdсеанс із певним PID. Ви можете використовувати pstreeдля друку, які команди успадковуються з якого sshdсеансу, а потім перехресно перевірити цей PID /var/log/auth.log.
Приклад (анонімізований): я увійшов на віддалений сервер із 3 одночасними сеансами, з тим самим віддаленим користувачем. Тепер я хочу дізнатися, з якого IP-коду прийшов клієнт, який запустив команду 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показує , що watchкоманда успадкований від sshdПИДА 15243. grepІнг для цього PID в /var/auth/auth.logпоказуєш , що він був IP 12.34.56.78 , який почав цю сесію. Тому це також користувач, який запустився watch.
Що стосується пошуку historyконкретно цього користувача, його неможливо зробити з того, що я бачу, коли всі віддалені користувачі використовують одного локального SSH-користувача. Крім того, це може бути легко підроблено / інактивовано / тощо., Тому це не дуже надійно. Якщо він збережений у файлі історії, ви можете просто шукати cpкоманду і озиратися назад у файлі, але якщо його немає, то робити не багато.
grep: /var/log/auth.log: No such file or directory:-(