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

I have three computers, A, B, C. A is the computer I'm working on, C is the remote computer I'd like to access. However C can only be accessed through B. Only B has a ssh server, and only A has a ssh client.

What command am I to use (preferably on A) so that I can connect to C (port 80) through B ? For example B should forward all incoming port 12345 to C:80.

I know this is a common question and I found a ton of commands on google but none seemed to work.

Once it is set up, I'm supposed to just use localhost:5678 on A, which connects to B:1234, and then forwards to C:80.


share|improve this question
up vote 1 down vote accepted

It might be that the sshd daemon is set to disallow port-forwarding to other machines or to disallow port-forwarding at all. Anyway, the correct command to issue at A to access C at port 80 as follows:

ssh -L localhost:5678:<ip-or-name-of-C>:80 <ip-or-name-of-B>

After the ssh session is established you connect to localhost:5678 to get connected to C:80. If you wish any inbound connection to the host A:5678 be forwarded to C:80, then remove localhost: from the command above.

If the port-forwarding to other hosts is disabled at B, then you could try the chaining, described here

share|improve this answer
This is it, thank you. However, I do get to the prompt of B. If I want to avoid that, I have to add -nN, right ? – Car981 Feb 25 '13 at 16:06
the -N is enough to not start a remote shell. if you wish to put ssh into background then, yes, add the -n switch – Serge Feb 25 '13 at 16: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.