SSH 服务器 - 获取 sshd 进程转发端口 #N 的 pid

SSH server - Get pid of sshd process forwarding port #N

我是 运行 服务器 (Ubuntu Server 14.04),它允许客户端从他们的设备 (Raspberry Pi) 创建一个 ssh 隧道,这样他们就可以访问他们的网络服务器来自互联网(作为穿越 NAT 的手段)。我可以使用 ps -u username 获取用户拥有的进程列表(所有设备都相同)(该用户仅运行 sshd 来转发端口),但我无法按端口过滤这些进程正在转发。所以问题是,如何获取转发端口#N 的 sshd 的 pid?

您可以使用 lsof 命令,因为所有内容都是 linux 上的文件。

lsof -Pan -i | grep :PORT 之类的东西可以满足您的要求。当我 运行 它用于我机器上的端口 80 时,它有这样的输出:

Command    PID     USER     FD  TYPE  DEVICE SIZE/OFF NODE  NAME
nginx      1104     root    6u  IPv4  23348      0t0  TCP *:80 (LISTEN)
nginx      1105 www-data    6u  IPv4  23348      0t0  TCP *:80 (LISTEN)
nginx      1106 www-data    6u  IPv4  23348      0t0  TCP *:80 (LISTEN)
nginx      1107 www-data    6u  IPv4  23348      0t0  TCP *:80 (LISTEN)
nginx      1108 www-data    6u  IPv4  23348      0t0  TCP *:80 (LISTEN)

可以找到有关 lsof 的更多信息 here