I have the following configuration and want to establish a tunnel on a tunnel. I read already the following topic: How to put a tunnel in a tunnel?

My configuration:

Notebook --> Linux Server A --> Linux Server B

Notebook: Windows XP with putty
Linux Server A and B: Ubuntu 10.10

I have a ssh connection with a tunnel from my notebook via putty to Server A. Now I want to establish a tunnel from Server A to B, so that I can connect with an IDE directly to my jboss on Server B.

This is the command I tried on Server A to establish a tunnel:

ssh -t -L 8080:localhost:8080 Server B -p 8822

This won't work.

Anybody an idea how to establish a working tunnel?


What you're looking for is called "ssh multi-hop". It is quite possible to do this transparently, using the ProxyCommand directive in .ssh/config (or an equivalent config option in PuTTY, or what-have-you):

Host linux-server-b
  ProxyCommand ssh -q linux-server-a nc -q0 linux-server-b 22

What this does, when you try to connect to linux-server-b:

  • opens a SSH connection to linux-server-a
  • runs netcat there, and opens a TCP connection to linux-server-b
  • forwards this connection back to you

This way, you can use all the features of SSH, as if you were connected to linux-server-b directly; you can even chain multiple hops together (server A to server B to server C to server D ...)

See also:

  • Since this was posted, ssh evolved to include a -W <host>:<port> option, that avoids the use of nc. – Alex Stragies Apr 16 '17 at 16:19
  • @AlexStragies: Good point. I'll check when this was added and edit. Oh, and there's now -J (or ProxyJump) which makes this even easier; but that's only in OpenSSH 7.3 and up. – Piskvor Apr 18 '17 at 9:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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