http proxy over ssh, not socks
The question is simple, but the answer is not :
ssh -D 8080 user@host
or
ssh -gCNf -D 8080 user@host
or
wathever with -D #
I need a kind of proxy that i can use with http_proxy variable, in an embedded device that doesn't support SOCKS.
What should i do?
Solution 1:
Method 1: Use a HTTP proxy that supports using a SOCKS upstream, e.g. Polipo or Privoxy.
First establish a -D
tunnel over SSH like always, then configure the HTTP proxy to use the SSH tunnel – example Polipo configuration:
proxyAddress = "::1"
proxyPort = 8118
socksParentProxy = "localhost:8080"
socksProxyType = socks5
Finally, point the app to Polipo using http_proxy=localhost:8118
.
Method 2: Run your program inside the torsocks
wrapper (or the older tsocks
), which proxies all connections transparently. It was meant for use with Tor, but works with any SOCKS server, including ssh -D
.
Method 3: Set up a HTTP proxy on your server, then use ssh -L
to access it.
Solution 2:
Every -D
results into a SOCKS server. If your client can not handle SOCKS forget -D
.
You must run a HTTP-Proxy on the remote host and forward with -L
:
ssh -f -N -n -L8080:127.0.0.1:8080 host
Solution 3:
I have the same issue that want to use HTTP proxy through SSH. Because many applications only support HTTP proxy, and HTTP proxy is easy to be used in command line environment.
Although searched several pages but I can't find a direct(can be chained with Polipo, Privoxy, or tsocks ) way to do this...
After a days' work, I finished a simple Golang version of HTTP proxy over SSH. Feel free to play with it: mallory.
Currently only support RSA key(located at $HOME/.ssh/id_rsa) and password authorisation.
host
is the SSH server address, port
is 22
if is not changed by your admin.
The server side is just our old friend sshd
with zero configuration.
mallory -engine=ssh -remote=ssh://host:port
or with username user
mallory -engine=ssh -remote=ssh://user@host:port
or with username user
and password 1234
mallory -engine=ssh -remote=ssh://user:1234@host:port
After connected, a HTTP proxy will serve on localhost:1315.