UltraVNC for Remote Support and Desktop Sharing

I’m in Portland, but I’m working on some projects with people in Chicago. In order to collaborate better, I was looking into ways to share my desktop with other users. I’ve used WebEx and other tools before, but I wanted something free. I also wanted something that worked through NATs (since I’m behind one), supported my multiple monitors, and was very easy for non-technical people to use. As in “click-on-this-URL-and-see-my-desktop” easy. So I started surfing around and saw the suggestion to use VNC, which I’d used in the past but not recently. 

VNC (Virtual Network Computing) is a desktop sharing/remote control program like Remote Desktop, PC Anywhere, etc. There is a server part (VNC Server) that runs on the shared PC, and a viewer (VNC Viewer) application that is run by people wanting to view and/or control the shared PC. The original VNC was open source, which spawn variants like TightVNC, UltraVNC, RealVNC’s Free Edition, and others. RealVNC is the group that originally created VNC, and they have a limited, free version, along with some better non-free ($30-$50) versions.

Web-based Desktop Sharing

Users normally connect to shared desktops using the Standalone VNC Viewer, an installed application that connects over port 5900. However, VNC (at least RealVNC and UltraVNC) also offers a web-based java viewer. So instead of installing software, user could instead open a web browser, go to a URL, and connect to a shared desktop via a java applet. Easy peasy.

Behind the scenes, the VNC Server contains a mini web service that listens on port 5800. A user can open a web browser and connect to the IP of a shared computer, e.g. http://somesharedpc.yourdomain.com:5800. When users hit that page, they see a web page and a small java applet that allows them to connect to that PC’s VNC server (if running). Once connected, they can see the desktop, use the mouse and keyboard, transfer files, and share the clipboard. 

I was able to connect to my PC from other computers on my LAN, but I wanted to make sure that my partners in Chicago could also see my desktop. Since my computer is behind a firewall, I needed to connect to my router and forward ports 5800 (for the web-based sharing) and 5900 (if people use the standalone viewer). Once that was done, VNC worked just fine over the internet.

Note that you can configure the VNC Server to prompt you before allowing connections, and to only offer view-only access to users.

Remote Support

UltraVNC also offers an intriguing remote support application called SingleClick. It’s a small EXE that users can download in order to let you view and control their desktops.

SingleClick Screenshot

As a software developer, you can brand and customize the EXE with your own logo, text, IP address, button labels, etc. You can also include your own rc4 encryption key for secure connections. Once you have your customized SingleClick EXE, you can put it on your web site, email it to clients, etc. Then when a client (or technophobic relative) has computer troubles, you run the VNC Viewer, the user runs the SingleClick EXE and authorizes the connection, and after a few seconds you’re logged into their computer. Once the session is done, SingleClick uninstalls itself from the user’s PC. And although you (as the viewer) need to ensure port 5500 is forwarded to your PC, your users normally won’t need to worry about firewall settings unless their firewall is blocking port 5500 outbound (which would only be the case in secure corporate environments). If that’s the case you could always reconfigure your SingleClick EXE to run over port 80, which should be allowed in almost any company.

There is a pretty detailed walkthrough in the UltraVNC forums on creating your own SingleClick EXE to perform remote support. I made my own EXE and was pleased with how easily it worked. I do wish it was a bit prettier, though. Since it’s open source, you might be able to make your own skin.

Other Features

Some other interesting features I noticed were

  • file transfer (TightVNC and UltraVNC)
  • multi-monitor support (UltraVNC and RealVNC)
  • Microsoft Windows Logon authentication, so users have to use MS logins to connect (UltraVNC and RealVNC)
  • a special video driver to speed up connections and reduce CPU utilization on the server (UltraVNC)
  • chat windows (UltraVNC)
  • some cool networking options like Repeater and NAT-to-NAT to get around NAT issues (UltraVNC)

Security

While the password exchange is secured in VNC, any text typed during the sharing session is normally passed in plaintext. That’s probably OK if you’re not typing anything sensitive, but any passwords, credit cards, etc. would be out in the open. In order to secure the entire session, you can install an SSH server and use SSH tunneling to connect to the shared computer. Non-Windows users can use OpenSSH while Windows users can use SSHWindows and follow Digital Media Minute’s SFTP install guide to get SSH running (SFTP uses SSH).

If you don’t want to deal with SSH, RealVNC’s non-free versions support session encryption, and UltraVNC supports a Data Stream Encryption plugin.

Conclusion

When I used VNC years ago, it worked well but was pretty basic. But now I’m pleasantly surprised at the new features, speed, and stability. RealVNC’s paid versions might be nice if you need tech support, want easy-to-use session encryption, and like paying for software. If you’re a novice user or just want the no-frills version, you could also try RealVNC’s free version — I found the setup & installation of RealVNC to be a bit easier than UltraVNC. Otherwise I’d suggest giving UltraVNC a whirl.

If you’re mostly interested in the remote support features, but want something easier to use and don’t mind paying for it, there are some non-free applications that are based on VNC. EchoWinVNC is one, as is NetworkStreaming.

0