查找与 /dev/pts/N 关联的物理机

查找与 /dev/pts/N 关联的物理机

如果我的操作系统有多个通过 ssh 登录的用户,有什么方法可以找到与每个 /dev/pts/N 关联的物理机(其中 N 是整数)?我所知道的是

WHO

辅助键

将显示哪个用户或进程与设备文件关联的命令,但我可以获得有关用户/进程来自的物理机的更多信息吗?也许是一个IP?

答案1

SSH(和mosh)实际上填充utmp/wtmp文件,例如wholast读取一些有用的信息,包括远程IP地址。

~$ who
...
ilkkachu  pts/26       2022-05-03 16:27 (127.0.0.1)
$ last -1a
ilkkachu  pts/26       Tue May  3 16:27   still logged in    127.0.0.1

尽管您可能想要 grep 获取正确的 tty 名称:

$ who | grep "pts/26"
ilkkachu  pts/26       2022-05-03 16:27 (127.0.0.1)

或者,您可以追踪打开文件的列表,以查找在 tty 上持有 fd 的 SSH 进程,然后找到相应的网络套接字。

答案2

伪终端不与“物理机”关联。它与正在运行的进程相关联(例如,ssh 会话、GUI 终端窗口、screen/tmux 中的窗口等)。您可以用来ps查找哪些进程正在使用给定的pts设备,并可能从那里回溯。

对于您想要执行的操作,ss(或netstat) 命令可能更有用。例如,我可以通过运行以下命令来查找与活动 ssh 连接关联的远程地址:

$ ss -tnp | grep sshd | grep ESTAB
ESTAB      0      0      192.168.1.200:22                 1.2.3.4:39240               users:(("sshd",pid=2706,fd=3))
ESTAB      0      0      192.168.1.200:22                 4.3.2.1:39242               users:(("sshd",pid=2809,fd=3),("sshd",pid=2771,fd=3))

相关内容