如何将 Putty 插入到 socks 代理的反向隧道?

如何将 Putty 插入到 socks 代理的反向隧道?

我想在我的家庭网络上设置一个 Raspberry Pi,以便从工作地点或其他地点(父母家)使用它作为 socks 代理。换句话说,我想浏览网页,并且无论我从哪里连接,都让它看起来像是从我的家庭网络进行的。

我知道这个问题已被问过多次,但我似乎无法弄清楚我做错了什么或遗漏了什么。

我快要让它工作了,但是经过数小时的搜索和尝试,我还是无法把它完全整合在一起。

这是我目前所拥有的。

家里的 RPi ----> Linux VPS <----- 我,在 Windows 机器上

从 RPI,我发出命令:

ssh -f -N -T -R 2210:本地主机:22[电子邮件保护]

这似乎在 VPS 上设置了反向隧道(我可以看到它在 VPS 上监听端口 2210):

tcp 0 0 0.0.0.0:2210 0.0.0.0:* 监听

从我的本地 Windows 工作站,我可以使用 Putty 通过 ssh 进入 Linux VPS 并发出以下命令:

ssh -p 2210 RPi 帐户@localhost

或者

ssh -l RPi 帐户 -p 2210 本地主机

我在 RPI 和 VPS 上设置了密钥,以便他们无需密码即可互相登录。

这将通过 VPS 将我从 Windows 工作站连接到 RPI,并且我能够建立与 RPi 的 SSH 连接,但是 Socks 代理不起作用。

我无法弄清楚如何从 VPS 和工作站上的 Putty 配置 SSH 命令以建立此连接并通过 RPI 传递 socks 连接以便我可以浏览。我在 Putty 中尝试了许多 SSH 隧道配置组合(端口转发、动态端口),但我能做的最好的就是从 Linux VPS(中间点)获取一个通向网络的 socks 代理连接。

从 VPS,我尝试过:

ssh -p 2210 -D 8888 RPi 帐户@localhost

然后我从工作站上的 Putty 使用如下隧道建立与 VPS 的连接:

L50000 127.0.0.1:8888

在本地将 socks 代理设置为 127.0.0.1 端口 50000 并不允许浏览器访问外界。

我缺少什么来允许我从本地工作站到 VPS 进行 socks 代理并将其链接到 RPi 并通过 RPi?

谢谢!

答案1

您不需要在 Linux VPS 上使用 SOCKS 代理,而需要将其安装在 Windows 机器上。您可以使用常规端口转发到另一个常规端口转发,但不能使用 SOCKS 转发到另一个 SOCKS 转发。

简单的解决方案是使用 Putty 连接到端口 2210 的 Linux-VPS,同时在 Putty 中创建 SOCKS 隧道。与 Linux-VPS:2210 的连接将转发到您的 PI,因此与 SOCKS 端口的连接也将转发到 PI。

正如您所描述的,常规转发到 SOCKS 转发也应该有效,但更复杂。您应该验证从 VPS 到 PI 的第二个 SSH 连接是否确实建立并且端口 8888 是否打开。

编辑

使用从 PI 到 VPS 的 SSH 连接创建的反向转发意味着与 Linux-VPS:2210 的 SSH 连接与与 PI:22 的连接相同,只是由于防火墙/路由限制,您无法使用后者。

因此用 Unix 术语来说,您只需要连接到 PI(通过 VPS)并进行端口转发:

ssh -D 50000 -p 2210 RPi-account@Linux-VPS

这相当于

ssh -D 50000 -p 22 RPi-account@PI

使用 Putty 时,您需要在“会话”选项卡中配置主机和端口 (Linux-VPS:2210),在“连接->数据”中配置用户名 (RPi-account),并在“连接->SSH->隧道”中配置端口转发。输入源端口 50000,目标为空,选择动态和自动,然后按添加。转发应列为D50000。您可能还想配置一个密钥以自动登录 PI。您的 VPS 不需要 PI 密钥即可工作。

相关内容