Friday, 9 November 2007

NX - Linux from a distance


I finally got around to testing NX (remote desktop, see "background" below) for Linux.

After doing a "stress-test" from an "impressive" distance of 5 kilometres, I'd say it's quite responsive, and otherwise appears to work as advertised. I especially like the resume functionality (suspend one or more login sessions), and resize-on-demand (i.e. toggling full-screen mode, or changing the resolution with the desktop adjusting).

As for the rest (sound etc.), it appears to behave properly, but then again, I've only just started using this. Graphically intense (e.g. 3D) applications don't work smoothly - no surprise there - on the other hand, neither does glxgears (20 FPS). Maybe by default, no frames are skipped.

Setup

Getting the (freeware) NX system up and running roughly means to:
  • Install nxclient, nxnode and nxserver on the host.
  • Generate DSA public key, and private key (without a passphrase) for the "nx" user.
  • Install nxclient on other machines; use the private key to authenticate as "nx", then use your login for the host.
Apparently it's a little more complicated than this, but for instance you can use an existing SSH server configuration which allows only public key authentication (hint, hint). That would only get you past the first security layer, though (the "nx" user), or I didn't see how to specify the user's private key in the client. A workaround I use is to use NX's own password database for authenticating users. (I could live with that, but is there a way to avoid this duplication? I guess it could also be a problem with other authentication methods.)

NoMachine's documentation covers many things, so I'm not sure what else to address for now. However, I could mention that - lacking suitable free software packages - I've tried instead to compile some stuff (see the repository) into an NX client on Debian stable/etch (on a G4 machine). After working around a configuration bug, I seem to be able to login and so on, but get stuck on a "Launching session" dialog. If I get this to work, I should be presenting some documentation soon after.

Background

NX is a technology for remote access (similar to that of rdesktop) to Linux or Solaris systems. It's based on SSH and X, but offers significant improvements in terms of security (as compared to (e.g.) some VNC solutions) as well as latency and bandwidth requirements (ssh -X, anyone?).

Sadly, the official package from NoMachine is freeware, but there doesn't seem to be a free software equivalent yet. While - strictly speaking - there is such code available for building a server or a client, only some server code (FreeNX) seems to be reasonably up to speed so far (but I hope this will change soon).

GNOME oddities?

I've hit on some bugs when running GNOME on the host, but it could be unrelated to NX. More specifically, I've experienced that gnome-terminal can get confused and open a terminal on the host; trying to logout in XFCE can close the remote GNOME session... :-) Given that, I try not to login with GNOME-ish stuff when it's already running on the host. (Instead, I use something like fluxbox, but that now fails to logout at all in an NX session, weird...)

No comments: