通过反向 SSH 的 SOCKS 代理

通过反向 SSH 的 SOCKS 代理

我见过类似的问题,但它的不同之处足以让答案不太有效。

我有两台 Debian Buster 主机 - 一台位于专用网络 (A);一台位于专用网络 (A); Azure 中的一个 (B)。

我希望主机 A 从主机 B 发起反向 SSH 连接。然后主机 B 随后打开 SOCKS 代理侦听器,以便与该代理侦听器的连接通过隧道传输回主机 A。我想通过输入命令来实现所有这一切在主机A上。

我知道我可以设置从主机 B 到主机 A 的反向 SSH 隧道(由主机 A 发起),如下所示:

ssh -R b:localhost:a b.b.b.b

a= 主机 A 的监听端口
b= 主机 B 的监听端口
,即b.b.b.b主机 B 的 IP 地址。

那么我怎样才能让第二部分 - 在主机 B 上自动创建 SOCKS 代理侦听器 - 工作?有可能吗?或者我是否需要在主机 B 上创建一个脚本,每当netstat显示反向 SSH 隧道已建立(或类似)时,该脚本都会创建 SOCKS 代理侦听器?

编辑以尝试根据第一个答案进行澄清。

答案1

你建立了第一步,反向 ssh 连接吗?如果是,则本地主机 A 应该侦听任意端口,例如 2222,通过该端口,流量将转发到 Azure 服务器 B 上的端口 22(如果 B 上使用默认 sshd 端口)。

  • 第二步,socks代理。

在主机 A 类型上,
ssh -p 2222 -D 4444 -N localhost
我任意选择本地(主机 A)上的端口 4444 供 SOCKS 代理侦听。

流量:4444 本地 A -> 2222 本地 A -> 22 Azure B

要进行测试,请在浏览器(例如Chrome)上使用socks代理设置,
google-chrome --proxy-server="socks://localhost:4444"
或选择SOCKS版本4或5
google-chrome --proxy-server="socks4://localhost:4444"

如果一切正常,您应该使用天蓝色计算机作为网关/代理来浏览互联网。检查您的公共 IP 以确定。

相关内容