Making proxy available on remote server through ssh tunneling

I know I can use ssh tunneling to create a "proxy" on my machine so that I can make all the traffic generated locally go through a remote server. Like this:

$ ssh -D 12345 myuser@remote_ssh_server

But what about if I need to create a "proxy" on the remote server, so that all the traffic that I send it will go through my local machine? Is this possible with ssh?

Essentially, I want to use my local internet connection with some specific commands to run remotely, as the server does not have direct access to the internet.


Solution 1:

The simplest way to do this is one port and host at a time. For example, to forward traffic from remote:8001 to intraserver:80,

ssh -R 8001:intraserver:80 myuser@remote

But if you want to forward all traffic from remote, and you have an ssh server running on your local host,

ssh -R 2200:localhost:22 myuser@remote ssh -D 10800 -p 2200 localhost

Unwrapping that:

  • -R 2200:localhost:22 sets up a forward from remote:2200 to localhost:22.
  • ssh -p 2200 localhost runs ssh on remote, to connect to remote:2200, and so back to localhost:22 (tunneled over the first ssh connection).
  • -D 10800 tunnels SOCKS from remote:10800, over the connection from remote back to localhost.