网上有很多教程解释如何配置 ssh 来创建动态端口转发服务器。就我而言,仅使用 Plink,我遇到了一些麻烦。
上下文如下:我希望将我HOSTA
(Linux 机器)的所有流量(HTTP、RDP 等)重定向到HOSTB
(Windows 机器)。
我的命令如下:
[HOSTB - Windows 计算机]
plink.exe -N -D 127.0.0.1:8888 -P 22 REMOTEIP
plink.exe -N -R 2222:127.0.0.1:8888 -P 22 REMOTEIP
[HOSTA-Linux 机器]
curl --socks5 127.0.0.1:2222 https://www.google.com
所有端口都已打开(HOSTB 上的 8888 和 HOSTA 上的 2222)。但是,流量似乎会从 HOSTA 发出,而不会从 HOSTB 发出。我尝试了不同的程序和不同的 socks 版本,问题仍然存在
我是否遗漏了什么?
谢谢 !
答案1
这是一个老问题,但它一直出现。
正如问题评论中提到的,您的尝试会导致动态端口转发到您希望从其发起通信的系统(SOCKS 客户端)。而这不会实现您所希望的反向动态端口转发。
您需要的是以下内容:
plink.exe -N -R 2222:127.0.0.1:8888 -P 22 REMOTEIP
and
# when local host is running SSH Server
plink.exe -N -D 127.0.0.1:8888 -P 22 localhost
or
# when local host has not SSH Server
plink.exe -N -D 8888 -P 22 PROXYSSHIP
or
# when a dedicated SOCKS proxy server is available
plink.exe -N -L 8888:SOCKSPROXYIP:SOCKPORT
您可以替换localhost
为另一个可以进行动态端口转发的 SSH 服务器,也可以将流量转发到 SOCKS 代理服务器。但是,为了实现您的目标,您选择的任何服务器都必须位于您想要代理的网络上。
因此,当您在目标网络上没有可以连接的 SSH 服务器时,通常会出现问题。例如,localhost
没有运行 SSHd(服务器),并且您在该网络上没有其他启用 SSH 的服务器上的帐户。此外,如果您不知道任何 SOCKS 代理为该网络提供服务,您的选择就会大大减少。
如果没有 SSHd 连接,您就无法做到这一点,因为 PLINK (0.63) 是一个没有 SOCKS 实现的客户端。如果您使用OpenSSH 7.6 或更高版本,SSH 客户端确实具有 SOCKS 功能,这意味着您可以使用以下命令重新连接回您的客户端框...
ssh me@mine -R 1080 -N -f
... SSH 客户端将充当代理服务器(无需单独的代理服务器)。唉,据我所知,这仅在使用 OpenSSH 7.6+ 构建的工具中可用。
因此,您可以尝试以下操作。1、2 和 3 与上面概述的更改配合使用,而 4 和 5 则需要研究。
- 您可以在 Windows 客户端上安装 SSH 服务器并使用
localhost
上述 - 您可以将同一网络上的另一台服务器与您的 Windows 客户端进行识别,并使用 PLINK 连接到该服务器并在那里运行您的 SOCKS 代理。
- 您可以识别一个已经在执行您想要的操作的现有 socks 代理。
- 您可以尝试找到更高版本的 PLINK,希望它能像 OpenSSH 7.6+ 一样添加 SOCKS 功能
- 您可能能够使用“安全套接字漏斗”,但它需要在某个地方设置一个服务器,以便您的 socks 客户端和 windows 客户端都可以访问,并且需要在 windows 客户端上运行 SSF 客户端。我自己还没有这样做过,所以我不是根据经验说的。