Connecting to Remote Desktop using proxy and Remote Desktop Gateway?

Solution 1:

As of 2008 a Microsoft employee indicated there was "no official way" to accomplish this. Given the six intervening years you'd like to think there has been progress, but I'm not seeing that there has been.

If I were in your situation I'd try to find a small Win32 HTTP/HTTPS proxy that can be "pointed" at an upstream proxy and configured to provide authentication. I don't have an immediate recommendation for such a thing. (I'd probably just throw something together with Perl or Python, personally.)

Solution 2:

Another option is to use an SSH tunnel. PuTTY, to name names, has an easily-configured proxy option, so it can work through the proxy server and then provide a local tunnel through which you can connect to the RDP destination.

This does assume that the client has something to login to via SSH, and more specifically something that can communicate with the RDP server.


Solution 3:

As Omaha's answer suggested, another option is an SSH tunnel. If you had SSH installed on your windows box [possibly not trivial] then you may be able to connect to that box, creating an SSH tunnel for a port, then connect your rdp client to that port (putty can create tunnels, or ssh can something like https://stackoverflow.com/questions/19161960/connect-with-ssh-through-a-proxy, ex:

ssh username@intermediary_box -o "ProxyCommand=nc -X connect -x proxy_host_name:80 %h %p" -L:3389:remote_rdp_box:3389 then point your rdp client to localhost like normal, I've had this way work for me over an HTTP proxy).

FreeRDP-WebConnect may be an option [it appears to be a web server backend to interface with RDP behind it, with HTML5 client front end] then you could open the port through to your box [whichever one it's serving on] and hopefully access that using HTTP. Assuming websockets aren't blocked. Guacamole appears similar (you setup a service and web server on the RDP server box, it provides an HTML5 front end).

Barring that, if you have an external 3rd box (not behind any firewalls) that has an SSH server you could create a port forwarding through that intermediary box, via SSH (same mechanism https://stackoverflow.com/questions/19161960/connect-with-ssh-through-a-proxy).

For newer RDP clients, you might be able to setup an extra RDP "gateway" then connect to that using HTTP http://sengstar2005.hubpages.com/hub/How-to-Remote-Desktop-to-a-Terminal-Server-via-a-Web-Proxy