We’ve had a couple of emails recently from readers who are working on various pieces of open-source software that, by coincidence, we already use, so we thought that this month we’d talk about some of these utilities. None of them are earth-shattering programs, but all of them help us in our day-to-day jobs, and some are absolutely indispensable. This isn’t going to be anywhere near a complete list, but just represents some of the tools we use on a daily basis. Think of these products then as essential parts of your system toolkit if you, like us, spend large chunks of your day logged into a Unix system, either on the desktop or a server.
We’ve written here about VNC more than once, but it bears mentioning again because it’s such an incredibly useful tool. VNC, which stands for Virtual Network Computing, is a way of logging into a remote system: you run a VNC server on the remote machine and a VNC client program on your local machine. For us, as Mac users, Chicken Of The VNC is the client we’ve used for years, although there are lots of others available – a quick Google search will turn up a ton of options. The beauty of VNC is that the “state” of your connection is held on the server, which means you can disconnect from the VNC session, reconnect later and everything will be just as you left it – all the programs you had running before will still be running, all the windows you had open will still be open and so on. Even if you’ve disconnected because of a crash, or because your network connection went down, nothing will be lost. Without VNC we’d have to log into five or six different servers each time we connected, but with VNC one connection does the lot for us.
It’s also worth noting that there are versions of VNC available for almost any client and server operating system pair you can mention: here, we have VNC server running on Solaris, Linux and Windows Server 2003 machines, and clients for everything from Macs, PCs and Unix/Linux boxes right down to Windows Mobile handhelds, so that even if all you have access to is your PDA or mobile phone, you can still control your machines remotely.
We should mention that VNC doesn’t encrypt the data in your session, so anyone eavesdropping on your network could, at least theoretically, see everything you’re doing. For that reason, we recommend tunnelling VNC through an SSH connection, so that all the data is encrypted. You’ll suffer a minor performance hit, but the security trade-off is well worth it.
Finally, Mac OS X versions 10.4 and above actually have a VNC server built in, in the form of Apple Remote Desktop. When you turn on Desktop Sharing, one of the options you’ll be given is to allow VNC clients to connect to the machine.
Sometimes, you just can’t use VNC. For instance, one of Ian’s clients is a large government department with an incredibly restrictive access policy. The department’s firewall only allows him to SSH in from one particular external machine, and SSH is the only port that’s open (apart from the ports for HTTP web access, of course, since the server runs a database-driven procurement system we created). The department also restricts what software we’re even allowed to run on the server. Sigh… Anyway, for this, and other reasons, VNC isn’t a viable option there, but nevertheless Ian often needs to run programs for long periods of time on the server and do multiple things at once. Fortunately, GNU Screen was written for just such tasks.