Ubuntu 12.04 „Precise Pangolin“
Ubuntu 10.04 „Lucid Lynx“
Ubuntu 8.04 „Hardy Heron“
Ajaxterm
ist ein webbasiertes Terminal. D.h. nur mit einem Webbrowser auf Clientseite kann man sich auf einem Rechner, auf dem Ajaxterm installiert ist, einloggen und wie in einer Shell auf ihm arbeiten.
Ein kleiner Hinweis zur Sicherheit: Ajaxterm an sich sollte sicher arbeiten, allerdings sollte man darauf achten, dass der Dienst sicher bedient wird, denn Ajaxterm lässt sich nicht ausschließlich an das LAN binden und bringt keine SSL-Verschlüsselung mit.
Befindet sich der Rechner, auf dem Ajaxterm installiert ist, direkt im Internet, so ist Ajaxterm immer zu erreichen. Des weiteren müsste man sich immer über eine unverschlüsselte Verbindung einloggen. Dies ist nicht zu empfehlen! Daher sollten diese zwei Punkte berücksichtigt werden:
Port 8022 per Firewall sperren (oder erst gar nicht weiterleiten)
Zugriff nur über Apache, lighttpd oder einen anderen Webserver als Proxy und mit SSL
Ist Ajaxterm auf diese Art und Weise aufgesetzt, spricht nichts gegen den Einsatz als Webterminal.
Ajaxterm kann direkt aus den Paketquellen von Ubuntu installiert werden. Dazu muss nur das Paket
ajaxterm (universe)
mit apturl
Paketliste zum Kopieren:
sudo apt-get install ajaxterm
sudo aptitude install ajaxterm
hinzugefügt werden. Anschließend ist das Webterminal sofort über die URL
zu erreichen. Der Dienst lauscht nun auf dem lokalen Rechner nach Verbindungen. Wer Ajaxterm aus dem LAN oder gar dem Internet erreichen möchte, der muss wie im Folgenden beschrieben den Webserver Apache so konfigurieren, dass Apache als HTTPS-Proxy vor Ajaxterm geschaltet ist.
An Ajaxterm gibt es nicht viel zu konfigurieren. Mit einem Editor [3] kann man zwei Optionen in der Konfigurationsdatei /etc/default/ajaxterm setzen.
Zum einen lässt sich bestimmen, über welchen Port Ajaxterm auf dem Rechner zu erreichen ist. Üblicherweise ist dies "8022
".
# Allow to change the default port used by Ajaxterm PORT="8022"
In neueren Versionen von Ajaxterm lässt sich zusätzlich festlegen, auf welchen Port der lokal installierte SSH-Server zu erreichen ist. Nutzt man bei diesem einen anderen Port als den üblichen Port 22, so kann man Ajaxterm hier
# Allow to use a different port than 22 to connect to the ssh server SERVERPORT="22"
vermitteln, einen anderen Port zu benutzen.
Wie alle anderen Dienste bringt Ajaxterm Start/Stop-Skripte mit. Diese Skripte lassen sich auch zum Kontrollieren des Dienstes verwenden:
# Allgemein sudo /etc/init.d/ajaxterm {start|stop|restart|force-reload} # Beispiel sudo /etc/init.d/ajaxterm restart
Aus den oben genannten Gründen sollte Ajaxterm nicht direkt angesprochen werden sondern nur über Apache und das Modul "mod_proxy_html
". Dadurch kann man erreichen, dass die Verbindung zu Ajaxterm über eine per SSL verschlüsselte Verbindung erfolgt.
Voraussetzung ist, dass Apache mit den nötigen Modulen ("mod_ssl
" und "mod_proxy_html
") schon auf einem Rechner zur Verfügung stehen. Im Wiki finden sich in den Artikeln:
die nötigen Informationen, um den Apache-Webserver dementsprechend konfigurieren zu können.
Prinzipiell muss eine Umleitung eingerichtet werden. Apache soll Anfragen an Ajaxterm weiterleiten. Hierzu muss im passenden "Virtual Host" eine Umleitung in der Art von
... ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass /ajaxterm/ http://localhost:8022/ ProxyPassReverse /ajaxterm/ http://localhost:8022/ ...
eingerichtet werden.
Als konkretes Beispiel soll die Umleitung an Ajaxterm über HTTPS erfolgen. Hierzu muss - wie oben in den Voraussetzungen geschildert - das Modul "mod_ssl
" des Apache-Servers aktiv sein. Sollte Apache via HTTPS ausschließlich das lokal installierte Ajaxterm bedienen, so würde man die Datei /etc/apache2/sites-enabled/ajaxterm anlegen und mit folgendem Inhalt füllen [3]
<virtualhost *:443> ServerName domain.beispiel.test ServerAdmin webmaster@localhost SSLEngine On SSLCertificateFile /etc/apache2/ssl/apache.pem ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass /ajaxterm/ http://localhost:8022/ ProxyPassReverse /ajaxterm/ http://localhost:8022/ SetEnvIf Request_URI "^/ajaxterm/u" dontlog CustomLog /var/log/apache2/ssl-access.log common env=!dontlog Loglevel warn ErrorLog /var/log/apache2/ssl-error.log </virtualhost>
Die letzten vier Zeilen dienen dazu, dass Ajaxterm nicht die Logdateien von Apache mit Logeinträgen flutet.
Ist die Umleitung gesetzt, muss Apache noch seine Konfigurationsdatei neu einlesen. Über ein Terminal [2] kann man dies mittels
sudo /etc/init.d/apache2 force-reload
veranlassen. Anschließend sollte Ajaxterm (wenn Apache wie im Beispiel angegeben konfiguriert wurde) unter der URL
zu erreichen sein.
Auch lighttpd eignet sich als Proxy für Ajaxterm. Dazu muss das Modul mod_proxy
mittels
sudo lighty-enable-mod proxy
geladen werden. Danach fügt man in die Datei /etc/lighttpd/conf-enabled/10-proxy.conf die Zeilen
proxy.server = ( "/ajaxterm/" => ( ( "host" => "127.0.0.1", "port" => 8022 ) ) )
ein und startet lighttpd neu. Ajaxterm ist dann (bei ebenfalls aktiviertem SSL) über https://localhost/ajaxterm/ erreichbar. Will man Ajaxterm auch über https://localhost/ajaxterm erreichen (ohne / am Ende), so muss man einfach das Verzeichnis ajaxterm im Wurzelverzeichnis des Webservers anlegen.
Ajaxterm funktioniert mit Firefox 3.6 nicht mehr richtig. Zur Lösung dieses Problems schlägt dieser Blogbeitrag vor, in der Datei /usr/share/ajaxterm/sarissa.js die Zeile 269
XMLDocument.prototype.readyState = 0;
durch voranstellen von //
auszukommentieren. Das kann aber andere Probleme hervorrufen. Um diese Änderung zu übernehmen, muss Ajaxterm neu gestartet werden. Alternativ kann man versuchen, die JavaScript-Bibliothek Sarissa manuell zu aktualisieren.
Probleme sind auch mit der Tastatursteuerung unter Safari aufgetreten.