Jump to: navigation, search

Peter Naulls discusses SSH options on RISC OS.



Like many non-trivial Linux users (which many RISC OS users probably are), I use SSH (secure shell, or just 'ssh') a great deal for command line access to machines. Unlike the venerable telnet, both the authentication and main communication are encrypted (although there are secure telnet options around), and version 2 of the SSH protocol has extensive use virtually everywhere.


On most Linux systems, you'll be using the OpenSSH client (run with just 'ssh'), and PuTTY is the most likely client on Windows, although there are a number of options, including using OpenSSH from within Cygwin. Mac OS X also has the OpenSSH as standard.


As usual on RISC OS, there are a number of solutions, but none of them are entirely satisfactory. Part of the reason is that terminal communication is really two things - the terminal itself, supporting various terminal emulations like xterm or VT220, which control the display of non-ASCII characters including colours and formatting. The second part is the protocol, which is the network layer communication. On Linux, the terminal part is performed by the console window (xterm, Gnome terminal, Konsole, etc), with the SSH client being separate. In PuTTY and some other clients, it is built into one program.


Naturally, the question might be why not an OpenSSH port for RISC OS? Well, this is actually straightforward, and there's a plain port on This is OK in a pinch, but it's just a command line port. You can run it from a TaskWindow, but it may not be very satisfactory - there won't be any colours or cursor control, just plain ASCII in the taskwindow.


Nettle is a very complete terminal emulator for RISC OS. By itself, it only does telnet, but it has the ability to run "ANSI Tasks" (ANSI referring to escape sequences used for terminal emulation) and can run OpenSSH inside itself. This is a big improvement over SSH in a taskwindow, but it's not 100% right - due to various limitations, cursor keys and some other input sequences aren't handled properly. It might in principle be possible to fix this, but no one seems to presently have an interest in this, and it may be a non-trivial problem.

Update - note that the current packaged version supports SSH2 natively - you can retrieve this from this page


This is a version of Nettle with SSH built in. The problem is that it's version 1 of the SSH protocol, which has been almost entirely deprecated. This is better than telnet in terms of security, but in practice no more useful, since it's probably not going to be allowed on most systems. Theo Markettos hosts a 32-bit build.


Graham Shaw developed RiscTerm due to dissatisfaction with the Nettle licensing. Unfortunately, it has not had a great deal of development, and only does telnet, and you cannot even adjust the window size. It does however, support Kerberos protocol for authentication, which is an improvement over plain text in telnet. It's possible someone might want to pick up on development of RiscTerm.


Also by Theo, is port of PuTTY to RISC OS. This version dates from 2005, and uses the ChoX11 interface library and old GTK 1.2 libraries. Because of that, it doesn't have very good RISC OS integration - in particular, the default font size is far too small to be practical.

PuTTY too could be improved, although the more recent versions (which can be compiled easily enough) use GTK 2, which still does not have a satisfactory port to RISC OS. Alternatively, a fully native front end could be written for RISC OS.

One solution to the lack of front end is to combine PuTTY with Nettle. This is already possible; for example, when using the latest (non-SSH) version of Nettle - version 0.2040r - you could add an entry to your hotlist which has "Hotlist label" set to "jbloggs@myserver" and "Connection" set to "ANSI task", then you would set up the "Command" to look something like this:

 ADFS::HardDisc4.$.Utilities.PuTTY.plink -pw password

(assuming you've installed plink from the PuTTY tools into a directory called $.Utilities.PuTTY.)

Hint: If you put plink into the libary (!Boot.Library on classic RISC OS - on Select it's somewhere else inside !Boot) then you can call plink without the path.


The problem for myself is that most of my RISC OS development is in fact done on Linux, cross compiling with GCCSDK. With my single monitor setup, flipping back and forth becomes tedious, so being able to SSH directly from RISC OS and accessing the Linux filesystem using Sunfish is much more productive.

As none of the solutions above is 100% satisfactory, I've had to again settle for telnet to Linux desktop, then ssh from there to anywhere else I need to go. Hopefully someone might feel compelled to improve upon this one day.

Personal tools