通过 ssh 而不是 socks 进行 http 代理

通过 ssh 而不是 socks 进行 http 代理

问题很简单,但答案却不简单:

ssh -D 8080 user@host

或者

ssh -gCNf -D 8080 user@host

或者

wathever with -D #

在不支持 SOCKS 的嵌入式设备中,我需要一种可以与 http_proxy 变量一起使用的代理。

我应该怎么办?

答案1

方法 1:使用支持使用 SOCKS 上游的 HTTP 代理,例如 Polipo 或 Privoxy。

首先-D像往常一样通过 SSH 建立隧道,然后配置 HTTP 代理以使用 SSH 隧道 - 示例 Polipo 配置:

proxyAddress = "::1"
proxyPort = 8118
socksParentProxy = "localhost:8080"
socksProxyType = socks5

最后,使用 将应用程序指向 Polipo http_proxy=localhost:8118

方法 2:torsocks在包装器(或旧版)内运行您的程序tsocks,它会透明地代理所有连接。它旨在与 Tor 一起使用,但可与任何 SOCKS 服务器配合使用,包括ssh -D

方法 3:设置 HTTP 代理在您的服务器上,然后使用ssh -L来访问它。

答案2

每个-D结果都进入 SOCKS 服务器。如果您的客户端无法处理 SOCKS,那就别想了-D

您必须在远程主机上运行 HTTP 代理并使用以下命令转发-L

ssh -f -N -n -L8080:127.0.0.1:8080 host

答案3

我也遇到同样的问题,想通过 SSH 使用 HTTP 代理。因为许多应用程序仅支持 HTTP 代理,而 HTTP 代理在命令行环境中很容易使用。

虽然搜索了几页,但我找不到直接(可以与 Polipo、Privoxy 或 tsocks 链接)的方法来做到这一点......

经过一天的工作,我完成了一个简单的 Golang 版本的 SSH HTTP 代理。请随意尝试一下:马洛里

目前仅支持RSA密钥(位于$HOME/.ssh/id_rsa)和密码授权。

host是 SSH 服务器地址,port如果22您的管理员没有更改的话。服务器端只是我们的老朋友,sshd无需任何配置。

mallory -engine=ssh -remote=ssh://host:port

或使用用户名user

mallory -engine=ssh -remote=ssh://user@host:port

或使用用户名user和密码1234

mallory -engine=ssh -remote=ssh://user:1234@host:port

连接后,HTTP 代理将在 localhost:1315 上提供服务。

答案4

在远程主机上运行 Privoxy,然后使用以下-L选项通过 SSH 连接到 Privoxy:

-L [绑定地址:]端口:主机:主机端口
         指定本地(客户端)主机上的给定端口
         转发到远程端的指定主机和端口。这
         通过分配套接字来监听本地端口,
         可选地绑定到指定的 bind_address。每当一个 con-
         连接到此端口,连接将通过
         安全通道,并建立与主机端口的连接
         来自远程机器的主机端口。

手册页源

相关内容