Remote Desktop is an excellent tool for accessing Windows machines across locations. While there have not been many security exploits involving RD, I do not feel comfortable leaving the service directly open to the internet. Also, many corporate internal firewalls restrict outbound traffic to a handful of ports, and in my experience port 3389 which RD runs on is often blocked.
I’ve come up with a simple method of accessing a Remote Desktop machine over SSH which buys A) Port 3389 is no longer open “to the wild” on the host machine B) If port 3389 is blocked outbound on the client’s network, Remote Desktop will still be accessible if the common port 22 (SSH) is available.
All that is needed for this method is an SSH server either running on the host machine or on its local network. If you’re using a Linksys router DD-WRT may be an option as it offers a full SSH server that runs right on your router. In this example I will be using DD-WRT, but any SSH server will work.
Step 1) Enable the remote access SSH service under Administration->Management in the DD-WRT configuration:

Step 2) You must also enable the Secure Shell service under Administration->Services:

I strongly suggest disallowing password login and instead use the authorized keys method with a strong passphrase.
Step 3) At this point the host-end is set up. Ensure the router has access to the machine running Remote Desktop by pinging it from the router’s shell. In this case the host machine is at 192.16.1.100 on the internal LAN:
You’ll need a SSH client on the client-side. For Windows PuTTY is the best game in town. The key here is to set up access to your host and tunnel a local port through SSH to the host’s Remote Desktop service. With PuTTY it’s just a couple of settings.
Step 4) Add the remote router or SSH server IP address to the Session settings:

Step 5) Configure the tunnel under Connection->SSH->Tunnels:

What’s important here is to pick an open port on your local computer because we are going to point Remote Desktop at that port. Under Windows XP Pro port 3389 is already taken by the local Remote Desktop service, so in this instance the port we use is 3390.
The destination is the internal IP or hostname of the host as it is known to the machine running the SSH server (in this case 192.168.1.100). The destination port will is 3389 (the listening RD service on the remote host).
Step 6) Connect to the host with SSH and login. At this point if everything is working correctly you should have a Remote Desktop port live on the client PC on port 3390. That port is being tunneled securely over SSH to the SSH server and forwarded on to the host machine. Keep the PuTTY session open or you will shutdown the tunnel.
Step 7) Time to test things out. Start the Remote Desktop Connection client and point to localhost:3390.

If all was configured correctly you should pop into a Remote Desktop session on the host computer. The speed is snappy enough for me on a 45KB/s connection with all the bells & whistles turned on, even with the additional encryption overhead.
Enjoy!