有没有办法在 bash 中显示完整的 ssh 和 su 链?
例如。在服务器 A 中以用户 aa 身份:
su - ab
ssh ba@B
su - bb
因此,我想要一个打印如下内容的命令:
1 bash aa in A
2 su ab in A
3 ssh ba in B
4 su bb in B
我尝试了 pstree,但是它没有打印用户并且只适用于最后一个 ssh 服务器的进程:
$ pstree | grep -C 5 pstree
serversshd---sshd---sshd---bash---su---bash-+-grep
| `-pstree
感谢致敬。
答案1
以下是您可以轻松找到的内容(您来自的服务器):
$ who
ba pts/0 2012-11-14 22:47 (<A hostname>)
我认为没有任何现成的方法可以检索您的完整bash
/ ssh
/su
历史记录。以下是我建议的比原来的更进一步的方法pstree
。但这非常粗略。
检索 sshd pid:
$ pstree -p | grep -B1 pstree
|-sshd(8259)---sshd(23962)---bash(23965)-+-grep(24390)
| `-pstree(24389)
这使您可以找出服务器上的哪个端口已A
连接:sshd
B
$ lsof -i -P | grep 23962
sshd 23962 ba 3r IPv4 36943568 TCP B:22->A:50174 (ESTABLISHED)
然后你可以查找谁在使用此端口A
:
$ lsof -i -P| grep 50174
ssh 19085 ab 3u IPv4 0x81104c4d3b4ee24d 0t0 TCP A:50174->B:22 (ESTABLISHED)
现在您可以使用19085
pstree 来查明已完成的操作A
。