Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

What's the difference between using SOCKS (SSH -D) and local port forwarding (SSH -L)

share|improve this question
Also helpful: – blong Jan 16 '14 at 19:10
up vote 12 down vote accepted

With -L, SSH forwards all connections to a fixed destination. When you connect to the local port, all data you send goes straight to the remote host which you specified in -L. This, obviously, requires you to know which host you want to forward connections to.

With -D, the destination is "dynamic" – after connecting to the local port, you have to use the SOCKS proxy protocol to further connect to whatever remote host you want. This basically makes SSH a real proxy server, suitable for such activities as web browsing, where you cannot know in advance the destination.

Run ssh -D 1080, for example, and configure Firefox to use a SOCKS 5 proxy at localhost:1080.

share|improve this answer
I often use ssh -D 8080 myhomecomputer when I use my laptop on public wifi. – Evan Krall Jul 24 '11 at 8:35
@EvanKrall Is the benefit of that approach the fact that all traffic (assuming applications are indeed using the SOCKS proxy) will be encrypted through your SSH connection (i.e. there will not be any plain text network requests) ? Also, how would one make sure all traffic is sent through the proxy? Is there a recommended way to do this for all applications? – blong Jan 16 '14 at 19:09

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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