staging.inyokaproject.org

Ajaxterm

Archivierte Anleitung

Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.


Anmerkung: Das Projekt scheint nicht mehr weiter entwickelt zu werden, die letzten Änderungen im Github-Projekt sind aus dem Jahr 2011.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Wiki/Icons/terminal.png 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.

Voraussetzungen

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 einen Webserver wie Apache oder lighttpd als Proxy und mit SSL

Ist Ajaxterm auf diese Art und Weise aufgesetzt, spricht nichts gegen den Einsatz als Webterminal.

Installation

Ajaxterm ist in den offiziellen Paketquellen enthalten. Folgendes Paket muss installiert werden [1]:

  • ajaxterm (universe)

Befehl zum Installieren der Pakete:

sudo apt-get install ajaxterm 

Oder mit apturl installieren, Link: apt://ajaxterm

Verwendung

./ajaxterm.png

Anschließend ist das Webterminal sofort über die URL http://localhost:8022 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.

Konfiguration

An Ajaxterm gibt es nicht viel zu konfigurieren. Mit einem Editor [3] kann man zwei Optionen in der Konfigurationsdatei /etc/default/ajaxterm setzen.

Port

Zum einen lässt sich bestimmen, über welchen Port Ajaxterm auf dem Rechner zu erreichen ist. Üblicherweise ist dies der Port 8022.

# Allow to change the default port used by Ajaxterm
PORT="8022"

Port des lokalen SSH-Servers

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 vermitteln, einen anderen Port zu benutzen:

# Allow to use a different port than 22 to connect to the ssh server
SERVERPORT="22"

Ajaxterm steuern

Wie alle anderen Dienste bringt Ajaxterm Start/Stopp-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 

Über Apache als Proxy

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.

Voraussetzungen

Voraussetzung ist, dass Apache mit den nötigen Modulen "mod_ssl" und "mod_proxy_html" zur Verfügung steht. Im Wiki finden sich in den Artikeln:

die nötigen Informationen, um den Apache-Webserver dementsprechend konfigurieren zu können.

Konfigurationen

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.

Apache Konfiguration einlesen

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 https://localhost/ajaxterm/ zu erreichen sein.

lighttpd als Proxy

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.

Problembehebung

Firefox 3.6

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 bei der Tastatursteuerung unter Safari aufgetreten.

Diese Revision wurde am 15. April 2019 23:51 von BillMaier erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Netzwerk, Server, Internet