【问题标题】:SSH server - Get pid of sshd process forwarding port #NSSH 服务器 - 获取 sshd 进程转发端口的 pid #N
【发布时间】:2017-10-14 19:13:40
【问题描述】:

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

【问题讨论】:

    标签: linux ssh server pid ssh-tunnel


    【解决方案1】:

    您可以使用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

    【讨论】:

    • 效果很好!!我可以做sudo lsof -Pan -i4 -c sshd -u domopro | grep :<clientPort> | awk {'print$2'} 并且只获得PID,这正是我需要自动化这个过程。谢谢;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-08
    • 1970-01-01
    • 2016-09-25
    • 1970-01-01
    • 2011-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多