In GNU/Linux I find it very easy to perform the following, but I am struggling to get our Windows users to connect via the same method.
The following is what I do on GNU/Linux. Can you please demonstrate how to do the same in Windows. We currently use PuTTY. Is there an alternative?
The raw command without any configuration set up looks like this:
ssh -J <jump-user>@<jump-host> <protected-user>@<protected-host>
An SSH config can be created at
~/.ssh/config that looks like this:
Host jump User <jump-user> HostName <jump-host> Host protected User <protected-user> HostName <protected-host> ProxyJump jump
You can then ssh like this:
PuTTY does not have a direct equivalent of
But there are two alternatives (while a bit more complicated to set up):
You open a connection in one PuTTY instance to the jump host and forward a local port to the protected host. For that see:
How to create SSH tunnel using PuTTY in Windows?
And then you open a connection in another PuTTY instance to the forwarded port.
Local proxy command using Plink.
This is an equivalent of OpenSSH
OpenSSH ProxyCommand equivalent in PuTTY
Apart from PuTTY, there’s also Microsoft build of OpenSSH for Windows. On Windows 10 version 1803 or newer, OpenSSH is built-in. On older versions of Windows 10, you can install it as an “Optional Feature” named “OpenSSH Client”. On you can just download a ZIP package. The client tools do not need any installation, you can just extract them.
What I’ve done in putty is set the host to the jump machine. Then in Connection -> SSH I set the remote command to
ssh -Y <protected-user>@<protected-machine>. Not quite the same thing, but it instructs putty to immediately run the SSH command upon login and when I close that, the whole thing closes down because that command will have completed.