我有一个应用程序打开一个连接随机的本地端口到远程服务器上的已知端口,该服务器拒绝来自我的 IP 地址的连接。有没有办法使用类似端口转发的工具来转发通过ip:port
SSH 隧道定向的所有出站连接?
答案1
本地端口随机是完全无关紧要的。完全无关紧要。端口转发可能不是您想要的正确术语。您的问题是关于使用代理的 ssh。我还没有这样做,但有办法。您需要在您和 ssh 服务器之间有一台计算机,ssh 服务器允许。此外,除此之外,您可能需要的一个术语是“tcp 端口重新映射器”。也有一些程序可以做到这一点。我会提到一些,但大多数人会使用 ssh 来使用它。
如果谈论一个独立于 ssh 的工具
这个程序可以完成你想要的 tcp 端口重新映射
端口映射器pm.exe http://www.kmint21.com/free/
或者 nc,尝试从 cygwin(它不在 gnuwin32 中) nc -l 1234 | nc 4.5.6.7 22
<-- 监听端口 1234,转发到 ip 4.5.6.7 端口 22
或者在你的代理计算机上使用 netsh so
C:\Windows\system32>netsh interface portproxy add v4tov4 listenport=4321 connect
address=10.0.0.50 connectport=47
see it is listening, and will forward to 10.0.0.50:47
C:\Windows\system32>netstat -aon | find "4321"
TCP 0.0.0.0:4321 0.0.0.0:0 LISTENING 844
但是您可以使用 ssh 来实现这一点,它是专门为此设计的。
ssh 本身可以进行 tcp 端口重新映射..(ssh 可能称之为端口转发)
您在一台计算机上运行一个 ssh 服务器,该计算机的 IP 地址与非 ssh 服务器一致。
然后在该计算机上使用 ssh -L 。它需要除其他参数之外,还可以考虑 2 个参数,即要监听的 IP 和要转发到的 IP:PORT。
因此你有 compA、CompB、CompC
我认为,在您的情况下,CompB 和 CompC 不是同一个 comp。
compC 运行非 ssh 服务器。compB 运行 ssh 服务器。
CompA 的 IP 不被 CompC 允许进入,但被 CompB 允许进入。
CompC 确实允许 CompB 的 IP。
因此 CompA 和 CompC 通过 CompB 进行通信。
因此,您从 CompA 连接到 CompB,在此之前,您在 compB 上运行端口重新映射。ssh 可以执行此操作。ssh -L... 网上有很多 ssh -L 的示例,您可以输入您的具体情况,ssh 服务器的 IP,CompA 连接的监听端口。以及非 ssh 服务器的 IP:PORT。它们都进入您在 CompB 上运行的 ssh -L 命令。ssh -L 创建一个端口转发功能,其中带有 ssh.exe 的 comp 会监听(对于您通常的非 ssh 客户端),而带有 sshd.exe 的 comp 会转发(到您通常的非 ssh 服务器)。
然后,您将非 ssh 客户端从 CompA 连接到 CompB,并通过您建立的 ssh 连接转发到 CompC。