使用动态端口分配的反向 SSH 隧道

Posted

技术标签:

【中文标题】使用动态端口分配的反向 SSH 隧道【英文标题】:Reverse SSH Tunnel with Dynamic Port Allocation 【发布时间】:2021-10-15 20:01:26 【问题描述】:

我们有一个实现反向 ssh 隧道以启用远程端口转发的系统。

这可以通过公共 IP 在本地网络上公开设备。 但是,我们通过静态端口分配来实现这一点,即我们将设备的序列号映射到端口,并且每次请求到达我们的服务器时序列号,我们转发到指定端口。

显然这种设计不可扩展,我们想用动态端口分配来代替它,这样服务器自己会负责分配端口并释放它一次设备离线。

如果您能就如何实现这一目标提出建议,那就太好了。

感谢期待并为我缺乏知识表示歉意,以防我没有更好地解释它(我是新手)

【问题讨论】:

【参考方案1】:

这可以通过在您的服务器上使用~/.ssh/authorized_keys 中的 ssh 命令脚本来解决。

command="reverse_server.py" ssh-rsa <publicKey>

首先,客户端必须连接到脚本并发送它自己的序列号(在我的情况下,使用一个 NIC 的 MAC 地址)。 服务器查看数据库并告知分配的端口号或为未知序列创建一个新的。

在下一步中,客户端可以连接,使用报告的端口号作为反向端口。

顺便说一句。如果隧道断开或卡住,您应该添加一些逻辑来监控和重新创建隧道。

【讨论】:

以上是关于使用动态端口分配的反向 SSH 隧道的主要内容,如果未能解决你的问题,请参考以下文章

内网接口调用,ssh反向隧道与nginx反向代理

反向 SSH 隧道监控

ssh隧道理解

两步建立 ssh 反向隧道

基于 SSH 反向隧道的 Dockerized Telnet

反向ssh隧道