场景是,云 Ubuntu 服务器在指定端口上运行 Socks5 代理服务器;在此云服务器上:
- Socks5 服务器在端口 1515 上提供服务(仅接受本地连接)
- SSH 正在接受来自端口 22、33 和 44 的连接
我们想要的是让任何客户端使用 SSH 的“动态端口转发”功能连接到云服务器上运行的 Socks5 服务器,具体客户端将使用此命令:
ssh -D 1080 -N -f [email protected]
因此,任何在客户端上使用端口 1080 的应用程序都将通过 SSH 连接路由其流量,然后通过远程 Socks5 服务器路由,因此流量路径将如下所示:
客户端计算机上运行的应用程序 > 端口 1080 上的客户端 Socks 服务器 > SSH 隧道 > 接受本地连接的 Socks5 服务器
我希望我已经解释清楚了,谢谢
编辑:我希望客户端仅使用 -D 选项,并希望服务器实际上将传入的 SSH 流量路由到另一个接口或 Socks 主机
答案1
首先,-D 1080 将在您的本地主机和 SSH 连接的远程端创建一个 SOCK5 代理。这就是为什么它不会转发到远程 SOCKS5 代理。
您需要创建一个 SSH 隧道,将最后一段隧道连接到远程 1515 端口,以便它在您的机器上显示为本地。
ssh -L 1515:localhost:1080 -N -f [email protected]
此时,在您运行上述 ssh 命令的本地框中的另一个窗口中......
然后您应该能够连接到 localhost:1080 以透明访问远程 SOCK5 代理。
请在此处查看有关 ssh 隧道的有用视觉指南:- https://iximiuz.com/en/posts/ssh-tunnels/