偶尔我必须连接到访问受到严格限制的服务器。
DMZ 防火墙仅允许通过 VPN 的入站 SSH。
出站 HTTP 连接被阻止。
我正在寻找一种通过 SSH 会话建立网络访问隧道的简单方法,因此我可以通过 yum / apt-get 安装更新和软件。理想情况下,我希望避免在保护区内安装额外的软件/服务。
在这种情况下你会怎么做?
SSH 具有-D <port>SOCKS 代理选项。但不幸的是,它只是从客户端到服务器的一种方式,并且没有反向选项。
Kai*_*aii 31
我终于设法做到了这一点ssh:
ssh -D) 编辑:SSH>7.6 不需要ssh -R) 到您的本地 SOCKS 代理1.在后台启动本地socks代理
编辑SSH>7.6 允许使用更简单的语法来启动代理。跳过这一步,继续第 2 步!
通过 SSH 连接到 localhost 并在端口 54321 上打开 SOCKS 代理。
$ ssh -f -N -D 54321 localhost
Run Code Online (Sandbox Code Playgroud)
-f 在后台运行 SSH。
注意:如果关闭启动命令的终端,代理进程将被杀死。还记得在完成后关闭终端窗口或自己杀死进程来清理自己!
2.连接到远程服务器并设置反向端口转发
将远程端口 6666 绑定到本地端口 54321。这使您的本地袜子代理可用于端口 6666 上的远程站点。
$ ssh root@target -R6666:localhost:54321
Run Code Online (Sandbox Code Playgroud)
编辑SSH>7.6 允许使用更简单的语法来启动代理!则不需要步骤 1:
$ ssh root@target -R6666:localhost
Run Code Online (Sandbox Code Playgroud)
3.配置服务器软件使用转发代理
只需配置 yum、apt、curl、wget 或任何其他支持 SOCKS 的工具即可使用代理127.0.0.1:6666。
瞧!挖隧道快乐!
4. 可选:安装代理链让事情变得简单
proxychains安装在目标服务器上使任何软件都可以使用转发的 SOCKS 代理(甚至telnet)。它使用一种LD_PRELOAD技巧将来自任意命令的 TCP 和 DNS 请求重定向到代理,并且非常方便。
设置/etc/proxychains.conf以使用转发的袜子代理:
[ProxyList]
# SSH reverse proxy
socks5 127.0.0.1 6666
Run Code Online (Sandbox Code Playgroud)
隧道任意工具(使用 TCP)与proxychains:
$ proxychains telnet google.com 80
$ proxychains yum update
$ proxychains apt-get update
Run Code Online (Sandbox Code Playgroud)
小智 6
较新版本的 SSH 允许使用非常简单的ssh-R <[bind_address:]port>. 仅使用主机上的端口和绑定地址,但不指定客户端端口将创建反向 SOCKS 代理。
这也在较新 SSH 版本的手册页中说明:
[...] 如果未指定明确的目的地,ssh 将充当 SOCKS 4/5 代理并将连接转发到远程 SOCKS 客户端请求的目的地。
您可以使用 curl 连接到一个简单的“给我我的 IP”-API(如http://ifconfig.io )来测试这一点。
$ curl ifconfig.io
对比
$ curl --socks5 localhost:<PORT> ifconfig.io
| 归档时间: |
|
| 查看次数: |
34853 次 |
| 最近记录: |