![SOCAT(仅限)反向隧道](https://linux22.com/image/200852/SOCAT%EF%BC%88%E4%BB%85%E9%99%90%EF%BC%89%E5%8F%8D%E5%90%91%E9%9A%A7%E9%81%93.png)
我遇到一种情况,我们试图将数据从一个网络获取到另一个网络 - 特别是访问不同网络上的私有 Maven 存储库。
网络 1 包含一个 Maven 存储库。网络受到几个 SSH 跃点的保护,其中端口转发被禁用sshd
。
[笔记本电脑],使用 VPN 运行 Docker 容器到其他网络
laptop
- Docker容器
vpn
- Docker容器
[跳转箱]
jumpbox.vpn.network.org
[服务器]
server.vpn.network.org
我们已经成功运行 vscode-server服务器并通过以下方式连接:
socat tcp-listen:8080,fork EXEC:"ssh server.vpn.network.org nc localhost 8081"
这让笔记本电脑命中localhost:8080
并将流量通过隧道传输到我们的网络server.vpn
,然后进入 netcat 并将流量发送到 vscode 服务器
我认为应该可以做相反的事情,我只是陷入困境。
目标是Socks5
通过类似的方式在笔记本电脑上运行代理
ssh -f -N -D 54321 localhost
然后进行socat调用server.vpn.network.org
,然后使用socks环境变量我可以运行maven并让它通过连接等代理回来。
我采取的方法是尝试这样做:
socat -v TCP:localhost:54321 EXEC:"ssh server.vpn.network.org nc -lkv localhost 54321"
这是“某种”工作,但不断断开连接。
fork
然后我尝试了和的组合reuseaddr
,但他们似乎没有解决问题。
我的下一个方法是考虑 unix 套接字或一些时髦的东西 - 但我想知道是否有人知道如何实现这项工作。
谢谢。
答案1
我不确定我是否理解您的设置以及您想要实现的目标。如果我这样做,您可以将第一个示例替换为:
ssh -L 8080:localhost:8081 server.vpn.network.org
而反向的解决方案是:
ssh -R 54321:localhost:54321 server.vpn.network.org