Man*_*han 11 linux ssh bash command-history
许多用户使用 ssh 访问一个服务器。我试图找出哪个用户执行了某个命令。
我可以知道当前访问服务器的用户列表,who
我也会知道使用history.
但是如何知道哪个用户cp file1.sh file2.sh在服务器中执行了命令?用户已执行命令并退出
每个新用户连接都会生成一个sshd具有特定 PID 的新会话。您可以使用pstree打印哪些命令是从哪个sshd会话继承的,然后在/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
Run Code Online (Sandbox Code Playgroud)
pstree -p显示该watch命令是从sshdPID 15243继承的grep。对此 PID 进行 ing/var/auth/auth.log显示启动此会话的是 IP 12.34.56.78。所以这也是启动的用户watch。
至于history专门查找该用户,从我所看到的情况来看,当所有远程用户都使用相同的本地 SSH 用户时,这是无法完成的。此外,它很容易被欺骗/失活/等等,所以它并不真正可靠。如果它保存到历史文件中,那么您只需查找该cp命令并在文件中向后查找即可,但如果它不存在,则无需执行太多操作。
| 归档时间: |
|
| 查看次数: |
22067 次 |
| 最近记录: |