通过 ssh 的 http 代理,而不是袜子

beh*_*ooz 42 linux ssh proxy socks-proxy http-proxy

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

ssh -D 8080 user@host
Run Code Online (Sandbox Code Playgroud)

或者

ssh -gCNf -D 8080 user@host
Run Code Online (Sandbox Code Playgroud)

或者

wathever with -D #
Run Code Online (Sandbox Code Playgroud)

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

我该怎么办?

use*_*686 43

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

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

proxyAddress = "::1"
proxyPort = 8118
socksParentProxy = "localhost:8080"
socksProxyType = socks5
Run Code Online (Sandbox Code Playgroud)

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

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

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


cev*_*ing 22

每个-D结果都进入 SOCKS 服务器。如果你的客户不能处理 SOCKS 算了-D

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

ssh -f -N -n -L8080:127.0.0.1:8080 host
Run Code Online (Sandbox Code Playgroud)

  • 对于要运行的代理,我发现“tinyproxy”超级简单,并且默认情况下已经合理配置。在 Ubuntu/etc 远程主机上,只需“sudo apt-get install tinyproxy”,然后如上转发到端口 8888:“ssh -L8888:127.0.0.1:8888” (5认同)

小智 9

我有同样的问题,想通过 SSH 使用 HTTP 代理。因为很多应用只支持 HTTP 代理,而 HTTP 代理在命令行环境下很容易使用。

尽管搜索了几页,但我找不到直接(可以与 Polipo、Privoxy 或 tsocks 链接)的方法来执行此操作...

经过一天的工作,我完成了一个简单的 Golang 版本的基于 SSH 的 HTTP 代理。随意使用它:mallory

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

host是SSH服务器地址,port22如果不是由您的管理员更改。服务器端只是我们sshd零配置的老朋友。

mallory -engine=ssh -remote=ssh://host:port
Run Code Online (Sandbox Code Playgroud)

或使用用户名 user

mallory -engine=ssh -remote=ssh://user@host:port
Run Code Online (Sandbox Code Playgroud)

或使用用户名user和密码1234

mallory -engine=ssh -remote=ssh://user:1234@host:port
Run Code Online (Sandbox Code Playgroud)

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


les*_*ana 5

ssh -L 8080:localhost:12345 user@host
Run Code Online (Sandbox Code Playgroud)

这将打开本地机器上的 8080 端口,并将所有数据转发到 localhost 上的端口 12345,如从远程机器上看到的那样。

  • 不要忘记,您还必须在远程主机上运行 HTTP 代理。端口转发本身无济于事。 (4认同)