how to tunnel Windows Remote Desktop through ssh using a linux box?

Solution 1:

Assuming your linux box is accessible from the internet at 1.2.3.4 on port 23008, on an external system I would do:

external% ssh -p 23008 -L 13389:192.168.8.y:3389 [email protected]

I'd then connect to the port-forwarded RDP system with

external% rdesktop localhost:13389

If your external box isn't a linux box, there will be equivalent commands for the tools you have; the idea is still the same: to forward external's port 13389 to 192.168.8.y's port 3389, then use external's RDP client to connect to localhost:13389.

You refer to setting up the linux box's sshd correctly, but unless you've reconfigured it, the standard sshd setup is likely to support this just fine.

Solution 2:

ssh -L 3389:<ip of windows server>:3389 <ip of ssh server> -l <ssh user> -N

Assuming 3389 is the port your RDP is running on AND the ssh server has access to said port, you can then connect to 127.0.0.1:3389 as if it were the remote server.


Solution 3:

One can use internal ssh tunneling from Remmina remote desktop client too.

If you can ssh to some linux server using ssh keys and that server have open 3389 (RDP) port for packets coming from your machine you can use following setup to RDP over ssh tunnel.

In profile editor setup the Basic tab as for direct connection. Go to SSH Tunnel tab and setup the tunelling like this:


[x] Enable SSH tunnel

(o) Custom [ip/hostname of ssh/linux server]

SSH Authentication:

User name: [username on the ssh/linux server]

(o) Public key (automatic)


Using those options Remmina opens

ssh -L 3389:[target windows server]:3389 [linux server] -N

and then connects the RDP session throug that ssh channel.

If you logon to the linux server using username/password or if you are using different identity file you have to change the SSH Authentication section of profile setup.