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
我是 运行 服务器 (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