我见过类似的问题,但它的不同之处足以让答案不太有效。
我有两台 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 以确定。