Can the following be achieved with SSH.

There are three machines involved:

A. My local machine at home
B. The SSH gateway server at school
C. A workstation in a lab, only reachable through B

I want to setup a SOCKS proxy. I want to be able to surf on my local computer at home, like I am in the lab. This is due some sites that are only reachable from the school's public ip.

So I want to run a SOCKS proxy on host C. But I do not manage to make it work from host A.

I connect to the gateway and from the gateway I connect to the workstation. But I can't make the gateway transfer the traffic properly from and to the proxy.

How can I do this?

link|improve this question
feedback

1 Answer

up vote 1 down vote accepted

Two slightly different methods. (Replace $PORTX and $PORTY with port numbers of your choice.)

    1. Connect from A to B, with "local forwarding" of $PORT to localhost:$PORT.

      machine-a$ ssh -L $PORT:localhost:$PORT machine-b
      
    2. Connect from B to C, with "dynamic forwarding" enabled.

      machine-b$ ssh -f -N -D $PORT machine-c
      
    3. Configure your browser to use proxy at localhost:$PORT.

    Steps #1 and #2 can be summarized to:

    ssh -f -L $PORT:localhost:$PORT machine-b "ssh -f -N -D $PORT machine-c"
    
    1. Connect from A to B, with "local forwarding" of $PORTX to machine-c:22.

      machine-a$ ssh -f -N -L $PORTX:machine-c:22 machine-b
      
    2. Connect from A to C over the tunnel, with "dynamic forwarding".

      machine-a$ ssh -f -N -D $PORTY localhost -p $PORTX
      

      (You can omit -f -N if you want to use the same tunnel for interactive connections too.)

    3. Configure your browser to use proxy at localhost:$PORTY.

link|improve this answer
Thank you, it works like a charm! – Sébastien Sep 7 '11 at 15:57
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.