Answers:
我最终ssh
只用以下方法完成了此任务:
ssh -D
)ssh -R
向本地SOCKS代理的反向端口转发()1.在后台启动本地袜子代理
通过SSH连接到本地主机,并在端口54321上打开SOCKS代理。
$ ssh -f -N -D 54321 localhost
-f
在后台运行SSH。
注意:如果关闭在其上启动命令的终端,则代理进程将被终止。还记得在完成后关闭终端窗口或自己取消进程来清理自己!
2.连接到远程服务器并设置反向端口转发
将远程端口6666绑定到本地端口54321。这使本地socks代理可用于端口6666上的远程站点。
$ ssh root@target -R6666:localhost:54321
3.配置服务器软件以使用转发的代理
只需配置yum,apt,curl,wget或任何其他支持SOCKS的工具即可使用proxy 127.0.0.1:6666
。
瞧!隧道开心!
4.可选:配置服务器软件以使用转发的代理
我发现proxychains
在目标服务器上安装使事情变得容易得多。
telnet
通过使用LD_PRELOAD
技巧将TCP和DNS请求从任意命令重定向到代理,它使任何软件都可以使用SOCKS代理(甚至是)。
设置/etc/proxychains.conf
为使用转发的袜子代理:
[ProxyList]
# SSH reverse proxy
socks5 127.0.0.1 6666
使用以下命令隧道任意工具(使用TCP)proxychains
:
$ proxychains telnet google.com 80
$ proxychains yum update
$ proxychains apt-get update
较新版本的SSH允许使用非常简单的选项ssh-R <[bind_address:]port>
。仅使用主机上的端口以及绑定地址,而不使用客户端端口将创建反向SOCKS代理。
较新的SSH版本的手册页中也对此进行了说明:
[...]如果未指定显式目标,则ssh将充当SOCKS 4/5代理,并将连接转发到远程SOCKS客户端请求的目标。
您可以通过curl连接到简单的“给我IP”(如http://ifconfig.io) API进行测试。
$ curl ifconfig.io
与
$ curl --socks5 localhost:<PORT> ifconfig.io