Comparisons
This page compares Anyterm with other methods of providing remote
access to a computer. These methods vary in their requirements of
the server and client computers and the nature of the network
between them (firewalls!) and the security and type of access that
they provide.
This page was last updated on 25th May 2005 - please let me know
if you have any updates, corrections, clarifications or additions.
I have not actually used the vast majority of these programs.
Entries are vaguely organised from more traditional to more
radical solutions, with discussion at the end.
1. Telnet
- Access provided
- Text terminal.
- Client Requirements
- Telnet client program. Included in most operating systems
including Windows.
- Server Requirements
- Telnet server.
- Network requirements
- Telnet port must be open.
- Security
- No encryption.
2. SSH
- Access provided
- Text terminal.
- Client Requirements
- SSH client program. Not included in Windows but can be
downloaded for free (e.g. Putty;
380kbytes).
- Server Requirements
- SSH server.
- Network requirements
- SSH port must be open.
- Security
- Communication is encrypted.
3. VNC
- Homepage
- http://realvnc.com/
- Freshmeat Page
- http://freshmeat.net/projects/realvnc/
- Description
- VNC provides remote access to a graphical desktop rather than
a text terminal by sending pixels rather than characters. The
links above are to the original implementation but the protocol is
open and a range of clients and servers are available.
- Access provided
- Graphical desktop.
- Client Requirements
- Both freely-downloadable stand-alone viewer programs and Java
web-browser viewers are available.
- Server Requirements
- A variety of server implementations are available.
- Network requirements
- Appropriate ports must be open.
- Security
- Different implementations provide different levels of
encryption and authentication.
4. TCP-over-HTTP Tunnels
- Description
- When the ports required by Telnet, SSH or VNC are blocked by a
firewall or other obstacle between the client and the server it is
possible to use a TCP over HTTP tunnel. Several such programs
exist, including Corkscrew, httptunnel
and httunnel.
- Client Requirements
- Tunnel client program; several freely downloadable.
- Server Requirements
- Tunnel server program; several freely downloadable. In most
cases the server must not be running a web server since the tunnel
will use the same port; the exception is httunnel
which is implemented as an Apache module.
- Network requirements
- Only standard HTTP(S) ports needed; should work with
proxies.
- Security
- Same as for the protocol being tunnelled.
5. CGI-Shell
- Homepage
- http://cgi-shell.binaervarianz.de/
- Freshmeat Page
- http://freshmeat.net/projects/cgi-shell/
- Description
- CGI-Shell consists of a CGI script and a client program that
communicate using HTTP. In effect it provides an HTTP
tunnel.
- Version considered
- 0.21
- Maturity
- Beta.
- Access provided
- Text terminal.
- Client Requirements
- Custom client program, probably Unix-specific.
- Server Requirements
- CGI-enabled web server.
- Network requirements
- Only standard HTTP ports needed.
- Security
- Not encrypted.
6. WebTerm
- Homepage
- http://awacs.dhs.org/software/webterm/Documentation/
- Freshmeat Page
- http://freshmeat.net/projects/webterm/
- Description
- WebTerm is a Java Telnet applet with VT100 color emulation.
- Version considered
- 1.4.1
- Maturity
- Stable.
- Access provided
- Text terminal.
- Client Requirements
- Web browser with Java.
- Server Requirements
- Telnet server.
- Network requirements
- Standard telnet port must be open.
- Security
- No encryption.
7. JCTerm
- Homepage
- http://www.jcraft.com/jcterm/
- Freshmeat Page
- http://freshmeat.net/projects/jcterm/
- Description
- JCTerm (JCraft's Term) is a pure Java VT100 terminal emulator
for SSH2.
- Version considered
- 0.0.8
- Maturity
- Alpha.
- Access provided
- Text terminal.
- Client Requirements
- Web browser with Java 1.3. Also runs on some PDAs.
- Server Requirements
- SSH daemon.
- Network requirements
- SSH port must be open.
- Security
- SSH provides encryption and authentication.
8. MindTerm
- Homepage
- http://www.appgate.com/products/80_MindTerm/index.php
- Freshmeat Page
- http://freshmeat.net/projects/mindterm/
- Description
- MindTerm is a Java SSH client that can be used as an applet or
stand-alone. The current version is free for personal use, though
earlier versions were GPLed.
- Version considered
- 2.4.2
- Access provided
- Text terminal.
- Client Requirements
- Web browser with Java, or other Java platform.
- Server Requirements
- SSH daemon.
- Network requirements
- SSH port must be open.
- Security
- SSH provides authentication and encryption.
9. Shell in a Box
- Homepage
- http://shellinabox.com/
- Freshmeat Page
- http://freshmeat.net/projects/shellinabox/
- Description
- Shell In A Box provides shell access to a server from within
any Java-enabled Web browser. Requests are tunneled over HTTP
using the same proxy settings that the browser uses. On the
server, it installs as a CGI program, and there is no client-side
installation neccessary. It sports full VT102 emulation with
Unicode support, international font files, ANSI colors, a
scrollback buffer, mouse position reporting, clipboard support,
and user-configurable emulation modes. All user preferences are
stored as cookies in the client's browser.
- Version considered
- 1.0beta
- Maturity
- Beta.
- Access provided
- Text terminal.
- Client Requirements
- Web browser with Java.
- Server Requirements
- CGI-enabled web server.
- Network requirements
- Only standard HTTP(S) ports needed; should work with proxies.
- Security
- Not encrypted?
10. WeirdMind
- Homepage
- http://www.tam.cornell.edu/Computer.old/remoteaccess/weirdmind/
- Freshmeat Page
- http://freshmeat.net/projects/weirdmind/
- Description
- WeirdMind combines the GPL version of the MindTerm Java SSH
client with the WeirdX Java X server. This gives you a terminal
within your web browser from which you can launch X applications
that are displayed in their own applet windows.
- Version considered
- 0.7
- Maturity
- Beta.
- Access provided
- Text terminal and X windows.
- Client Requirements
- Web browser with Java.
- Server Requirements
- SSH daemon.
- Network requirements
- SSH port must be open.
- Security
- SSH provides authentication and encryption.
11. SSHWebProxy
- Homepage
- http://www.ericdaugherty.com/dev/sshwebproxy/
- Freshmeat Page
- http://freshmeat.net/projects/sshwebproxy/
- Description
- SSHWebProxy is a Java Servlet application that enables users
to access SSH Shell sessions and SSH File Transfer sessions using
a web browser. All client interaction uses pure HTML, so it can be
used from anywhere.
- Version considered
- 0.5
- Maturity
- Beta
- Access provided
- I believe that the web page submits keystrokes line-at-a-time
to the server which returns a new terminal snapshot.
- Client Requirements
- Any web browser.
- Server Requirements
- Web server capable of executing Java servlets, e.g. JBoss.
- Network requirements
- Only standard HTTP(S) ports used.
- Security
- Works with SSL.
12. PHP Shell
- Homepage
- http://mgeisler.net/php-shell/
- Freshmeat Page
- http://freshmeat.net/projects/phpshell/
- Description
- A PHP script that executes commands one at a time.
- Maturity
- Mature
- Access provided
- Executes single commands, so interaction is not possible.
- Client Requirements
- Any web browser.
- Server Requirements
- Web server with PHP, not in "safe mode".
- Network requirements
- Only standard HTTP(S) ports used.
- Security
- Presumably works with SSL.
13. wapsh / htsh
- Homepage
- http://www.exolution.de/geschaeft/produkte/wapsh.en.htm
- Freshmeat Page
- http://freshmeat.net/projects/wapsh/
- Description
- wapsh provides a shell on any WAP-capable mobile phone, and
includes features to improve accessibility such as shortcuts and
command history. htsh provides equivalent access from web
browsers. Free for non-commercial use.
- Version considered
- 1.0.1
- Maturity
- Stable.
- Access provided
- Keystrokes are sent line-at-a-time to the shell or other
process. No terminal emulation.
- Client Requirements
- Any web browser, or any WAP browser.
- Server Requirements
- Apache with PHP.
- Network requirements
- Uses standard HTTP(S) ports.
- Security
- Works with SSL.
14. Anyterm
- Homepage
- http://anyterm.org/
- Freshmeat Page
- http://freshmeat.net/projects/anyterm/
- Description
- Using Javascript, XmlHTTP and an Apache module it's possible
to interact with a box on a web page that behaves like a shell or
other text-mode application on the host machine. Performance it
quite respectable and it will run almost anywhere since it uses
only HTTP on standard ports.
- Version considered
- 1.0 / 1.1.0
- Maturity
- Stable.
- Access provided
- Text terminal.
- Client Requirements
- Web browser with XmlHTTP, i.e. Internet Explorer, a
Mozilla-based browser or Opera. Konqueror and Safari may or may
not provide XmlHTTP in their latest versions. Javascript must be
enabled.
- Server Requirements
- Must be Apache 2 on a Unix-like platform (only Linux tested so
far.) Root access required to install module.
- Network requirements
- Only standard HTTP(S) ports needed; should work with proxies.
- Security
- Communication can be encrypted using SSL, which also
authenticates the server to the client if a trusted SSL
certificate is used.
15. Anyterm Standalone Daemon
- Homepage
- http://anyterm.org/standalone.html
- Description
- Uses the same browser Javascript as Anyterm, but with a custom
server, independent of Apache.
- Version considered
- 1.1.7
- Maturity
- Experimental
- Access provided
- Text terminal.
- Client Requirements
- Web browser with XmlHTTP, i.e. Internet Explorer, a
Mozilla-based browser or Opera. Konqueror and Safari may or may
not provide XmlHTTP in their latest versions. Javascript must be
enabled.
- Server Requirements
- Custom server.
- Network requirements
- Can use any port; cannot use the same port as an existing web
or other server.
- Security
- None.
16. AjaxTerm
- Homepage
- http://antony.lesuisse.org/qweb/trac/wiki/AjaxTerm
- Description
- Ajaxterm is a web based terminal, inspired by Anyterm. The
server side is written in python using qweb, with Javascript in
the browser.
- Version considered
- 0.5
- Access provided
- Text terminal.
- Client Requirements
- Web browser with XmlHTTP.
- Server Requirements
- Qweb provides a lightweight web server which AjaxTerm runs
inside. Qweb also supports various CGI-like web server interfaces
which AjaxTerm can presumably also use, though I am not sure how
the session persistence works in those cases.
- Network requirements
- Can use any port; to use the same port as an existing web
server one of hte CGI-like interfaces described above must be
used.
- Security
- Unknown; does Qweb support SSL?
17. Discussion
If you don't need encryption, can install programs on the client
machine and have no firewalls in the way then everything is easy!
The more of these factors that come into play the more your choices
are narrowed down.
If you can install programs on the client machine then you can
use an SSH client like Putty or a VNC viewer. If there's a firewall
problem, install a tunnel as well. Of course you might still
sometimes prefer to use one of the browser-based solutions to avoid
the time taken to download and install.
If you don't have firewall problems, JCTerm provides SSH in a web
browser. If you do have a firewall in the way you can use Shell in
a Box because it uses HTTP ports, but it doesn't provide encryption
(unless it can use SSL?).
SSHWebProxy and PHP Shell both have minimal client and network
requirements, but they operate in a one-line or one-command at a
time mode, rather than as a fully interactive terminal.
Anyterm doesn't need any installation on the client, works with standard ports
and can use SSL encryption. Furthermore it doesn't need Java:
although Java is currently widely available, Microsoft will not be
including their JVM in Windows after the end of 2007. The XmlHTTP
support that Anyterm needs is included in most new browsers and will
become even more widespread in the future.