We have looked at other remote desktop-sharing programs in the past, but one of my favourites is NoMachine’s NX. NX has been around for a long time, and one of the reasons I enjoy it so much is that it uses SSH as a transport and authentication layer. If the remote system can run sshd, and port 22 or some other port that sshd is listening to can be accessed through a firewall, then you have most of the pre-requisites for remote desktop access via NX already in place.

NX server is available for Linux and Solaris, so it isn’t as cross-platform as one might like. If, however, you strictly need something to share or access a remote Linux or Solaris system, NX is a perfect solution.

The free NX server is packaged with many Linux distributions. On Fedora, you can easily install it using:

# yum install freenx-server

The client package is called freenx-client; clients for other operating systems can be downloaded from the NX web site.

Once the server package is installed, you can start it by executing:

# service freenx-server start

The best transport mechanism NX uses is SSH — this allows strong authentication and encryption of the session. The client will connect to the remote system as the nx user, so if you have modified /etc/ssh/sshd_config to only allow specific users, you will need to add the user nx to this list.

Next, you need to obtain a copy of the server’s /etc/nxserver/client.id_dsa.key file and import it on the client. You also need to know the user’s password that you want to establish the connection for. Essentially, the NX client will connect to the server as the user nx, then authenticate locally to the defined user with the defined password, and finally start the remote desktop.

To launch the Linux client from the freenx-client package, launch the qtnx application (also available under Applications | Internet in Fedora’s GNOME menu). If a freenx client is not available, download the client from the NX web site.

Figure A

On the client, in the General tab (Figure A), you will see the hostname of the host to connect to, the port (default is 22), and you can also tell the NX client to remember your password. There is a button entitled Key, which is what you need to use to import the contents of the client.id_dsa.key you obtained from the server.
You choose whether you want to use GNOME, KDE, or some other desktop interface, and select the connection type; usually Unix will suffice here. You can also customize the size of the remote display (Figure B).

Under the Services tab of the official NX client, you can determine whether or not multimedia support is enabled (i.e., receive sound events from the server), whether CUPS printing is enabled, and whether SMB file sharing is enabled. This functionality does not exist in the QtNX client.

Figure B

NX is a really fast, and very secure, remote desktop system. The Free NX server comes with most Linux distributions, and the clients are free for download; there are clients for Linux, Windows, OS X, and Solaris.

The downside of NX is that the server only runs on Linux and Solaris. It would be really great to see a server for OS X, and one for Windows as well. Then NX would be the perfect cross-platform replacement for other remote desktop protocols, including VNC.