GateOne, more than a web-based SSH
by Emile `iMil' Heitor - 2013-01-26
I’ve been searching for a Web-based SSH for quite a while, and I recently read about GateOne on the dedicated Wikipedia page. Not only GateOne does what I was searching for, but it also comes up with nice features like interpreting images on-the-fly.
The remote server on which I intended to run this software is, of course, a NetBSD 6.0 domU, and as I anticipated, some work was needed in order to make GateOne work on this platform.
The software needs the following dependencies:
- textproc/py-html5lib
- devel/py-readline
- graphics/py-imaging
- misc/dtach
- www/py-tornado The latter was not available in pkgsrc, so I created the package and commited it to pkgsrc-current. The package is straightforward:
Back to GateOne, while this software is really handy, it has not been made very “packageable”, meaning that it expects everything to be located on the same directory, i.e. ${PREFIX}/gateone
. Not being brave enough to dig into the implications of such choice within the code, I have not made a public package of it, instead I created a local-package that suits my needs. Why not simply use the bundled setup.py
? Because every .py file begins with:
this had to be changed to pkgsrc’s default python PATH, and using pkgsrc’s REPLACE_PYTHON command was easier than a find / sed / whatever oneliner.
Here’s the local package I created in pkgsrc/localpkg, which is owned by my user for convenience:
At some point I may write a real package out of this, but I wanted to play with that shiny client quickly :)
Once installed, you’ll end up with a ${BASEDIR}/gateone
directory, which you may want to chown -R youruser
for convenience.
I rapidly got bitten by that reported bug https://github.com/liftoff/GateOne/issues/161, which actually was a bug in the software itself. Simply modify the file /usr/pkg/gateone/plugins/ssh/scripts/ssh_connect.py
, line 402, from:
to
At this point, GateOne should run normally. If you are, as I do, to run the frontend with a non-privileged user, take care to change some values in the server.conf
file:
Also, as I use a CAcert-enabled reverse proxy, I had no use of the SSL, so I set disable_ssl
to True
. Do not forget to update the origins
variable accordingly.
There we go! I now have a shiny HTML5 Terminal Emulator, ready to accept my SSH connections wherever I am… and here’s the mandatory screenshot :)