如何列出所有活动的反向 SSH 连接的端口号?

如何列出所有活动的反向 SSH 连接的端口号?

我有多台机器通过反向 SSH 隧道连接到一台服务器。因此,每台机器都在运行以下命令:

while true; do
    ssh -X -R 19999:localhost:22 www.sern.pro
    sleep 30
done

此处19999将根据不同的连接而变化(例如1999019991等等)。可以使用以下命令从服务器访问这些反向 SSH 连接:

ssh -X localhost -p 19999

服务器如何显示活动的反向 SSH 连接列表?我曾尝试使用,netstat但这需要预先了解正在使用的本地端口,并且无法明确表明这是反向 SSH 连接:

# netstat --all --timers | grep "19999"
tcp        0      0 localhost.localdo:19999 *:*                     LISTEN      off (0.00/0/0)
tcp6       0      0 ip6-localhost:19999     [::]:*                  LISTEN      off (0.00/0/0)

根据 @frank-thomas 的建议,我尝试使用该命令netstat --all --timers --program --numeric | grep ssh查找非标准 SSH 进程。当我这样做时,在netstatTCP 列表之后,我得到了如下 UNIX 列表:

Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   PID/Program name         Path
unix  2      [ ]         DGRAM                    64179539 28569/sshd: username [pr P475
unix  3      [ ]         STREAM     CONNECTED     60024486 14205/sshd: username [pr P60024485
unix  3      [ ]         STREAM     CONNECTED     62232808 5088/sshd: username [pri P62232133
unix  2      [ ]         DGRAM                    60024422 14205/sshd: username [pr P475
unix  3      [ ]         STREAM     CONNECTED     64180927 28569/sshd: username [pr P64180926
unix  3      [ ]         STREAM     CONNECTED     8303     3911/sshd                P8304
unix  3      [ ]         STREAM     CONNECTED     60024487 14205/sshd: username [pr P60024488
unix  2      [ ]         DGRAM                    62232598 5088/sshd: username [pri P475
unix  3      [ ]         STREAM     CONNECTED     64180931 28569/sshd: username [pr P64180932
unix  3      [ ]         STREAM     CONNECTED     62232798 5088/sshd: username [pri P62232797

如何解释这些数据以列出服务器上正在使用的反向 SSH 隧道端口?如何从中得出 19999 这样的数字?

答案1

您可以使用以下方式获取它:

netstat -anp | egrep ‘127.0.0.1:*(LISTEN|.*)’ | 排序

此命令列出所有活动端口的连接并对其进行排序。

如果您有一个仅包含 40000 到 45000 的端口范围,您可以将 4 添加到 egrep 如“127.0.0.1:4*(LISTEN|.*)”以仅获取以 4 开头的端口,而不是获取所有端口。

答案2

你可以使用

sudo ss -ltp | grep sshd

列出sshd进程打开以进行监听的所有 TCP 端口,包括默认监听器(通常在 上tcp/22,但如果您选择为sshd守护进程配置备用端口,则在其他地方)。然后,您可以检查列出的 PID 以确定哪个用户打开了ssh正在监听每个端口的连接。

相关内容