我需要在Java中的两个主机(比如host1和host2)之间建立一个Socket连接(TCP)。但看起来我因为防火墙而无法做到这一点。虽然有第三个主机(比如host3)可以从host1和host2访问,但我认为可以用作此连接的中间件。
基本上,我想从host1(客户端)向host3发送请求,host3将我的请求重定向到host2(服务器)。
您能否告诉我如何实现这一目标?
提前致谢!
答案 0 :(得分:3)
您可以使用
建立SSH隧道ssh host3 -L4321:host2:6523
然后从端口4321上的host1连接到host3。这实际上被重定向到host2上的端口6523.
类似的选项可能是让ssh
提供SOCKS服务器。
ssh host3 -D 6543
然后使用curl
代替wget
。
然后你可以做
curl http://host2/foo/bar --socks4 localhost:6543
(未经测试,--socks4a
和--socks5
也可以作为选项......)
此ssh
命令在本地创建一个SOCKS服务器,该服务器将连接尝试隧道传送到ssh服务器,然后ssh服务器执行它们。