小编cod*_*ure的帖子

如何确定服务器上为动态绑定的 openssh 反向隧道分配的端口?

在最新版本的 OpenSSH 上创建反向隧道时,可以指定远程端口 0 来绑定任何可用端口:

-R [bind_address:]port:host:hostport

...

如果端口参数为“0”,则侦听端口将在服务器上动态分配并在运行时报告给客户端。

openssh ssh 客户端联机帮助页

我的问题是如何(以自动方式)确定服务器上的此端口分配。向运行 ssh 客户端的主机报告它似乎没有帮助 - 但不是向目标报告,目标将要连接到此端口以访问客户端上的服务。

我能想到的两个类似选项正在运行

# netstat -ntlp
Run Code Online (Sandbox Code Playgroud)

在服务器上并通过 sshd 或查看输出来查找绑定在 127.0.0.1 上的可疑端口

# lsof -p $PPID | grep TCP | grep LISTEN
Run Code Online (Sandbox Code Playgroud)

但是从自动化的角度来看,这两种方法都不是令人愉快的,如果创建了多个这样的隧道,则没有任何方法可以将动态端口绑定回原始服务端口。

在 sshd 服务器端有效地获取活动隧道列表(本地和远程端口号)是否有任何遗漏,例如相当于 SSH_CONNECTION 环境变量,但对于活动隧道?

对于某些情况,我正在尝试创建可能非常多的并发反向隧道到主机,隧道返回到许多不同主机上的相同端口号。让 TCP 堆栈自动管理端口池似乎是最有效的方法。

ssh openssh ssh-tunnel

16
推荐指数
1
解决办法
4109
查看次数

标签 统计

openssh ×1

ssh ×1

ssh-tunnel ×1