Ajaxterm

Aus Mikiwiki
Zur Navigation springen Zur Suche springen

Ajaxterm ist eine VT100-kompatible Terminalemulation, die hauptsächlich aufgrund der Komplexität von Anyterm entwickelt wurde. Ajaxterm ist serverseitig in Python geschrieben, clientseitig in Javascript, und funktioniert zusammen mit dem Apache-Modul "mod_proxy" als Daemon.

Installation

Ubuntu 8.04 Hardy Heron

$ sudo apt-get install ajaxterm

Konfiguration

Die Konfiguration findet über die Datei "/etc/default/ajaxterm" statt.

Nach der Installation kann über die URL http://localhost:8022/ mit Hilfe eines Webbrowsers auf die lokale Befehlszeile zugegriffen werden. Ajaxterm ruft dazu auf dem Rechner "/bin/login" auf, danach läuft im Browserfenster eine voll funktionsfähige Terminalsitzung ab. Drei Schaltflächen im Fenster bieten Zusatzfunktionen:

  • "Color" schaltet den Farbmodus aus und wieder an.
  • "GET" wechselt zwischen den HTTP-Methoden GET und POST, wobei POST die sicherere und deshalb voreingestellt ist. Zwar wäre die GET-Methode schneller, jedoch erscheinen damit alle URLs und sogar die einzelnen Tastendrücke in der Logdatei des Webservers - zumindest für die Passworteingabe sollte also unbedingt auf POST umgeschaltet werden.
  • "Paste" erlaubt das Kopieren und Einfügen über die Zwischenablage, sofern das in den Sicherheitseinstellungen des Webbrowsers erlaubt wurde. Das ist nur möglich, wenn Javascript auf die Zwischenablage zugreifen darf.

Statt von "/bin/login" startet Ajaxterm über die Option "-c" wahlweise ein anderes Programm, sodass beispielsweise über ssh die Weiterleitung auf einen anderen Rechner möglich ist. Auf Wunsch schreibt Ajaxterm eine eigene Logdatei - über die Option "-l" auf die Standardfehlerausgabe. Da Ajaxterm Verbindungen nur über die Localhost-Netzwerkschnittstelle zulässt, ist für den Fernzugriff zusätzlich ein Webserver nötig. Hier beschrieben ist ausschliesslich die Konfiguration des Apache HTTP Server ab Version 2.

Verbindung über HTTPS

Auch wenn eine Firewall den SSH-Login über Port 22 verbietet und generell alle Ports ausser 80 (HTTP) und 443 (HTTPS) sperrt, erlaubt Ajaxterm den Fernzugriff, denn es läuft auf dem entfernten Rechner und stellt über HTTPS ein Terminalfenster im Webbrowser dar.

|----------------|                       |----------|      |-----------------------------------------------|
| CLIENT         | --- verboten: 22 ---> | FIREWALL |      | ENTFERNTER RECHNER                            |
| mit Webbrowser | --- erlaubt: 443 ---------------------> | Apache --- 8022 ---> Ajaxterm ---> /bin/login |
|----------------|                       |----------|      |-----------------------------------------------|

Dazu ist eine externe Umleitung über Apaches Proxy-Funktionen in der folgenden Art notwendig.

Listen 443
NameVirtualHost *:443

<VirtualHost *:443>
  ServerName test.xxx.yy
  SSLEngine On
  SSLCertificateKeyFile ssl/apache.pem
  SSLCertificateFile ssl/apache.pem

  # Hauptverzeichnis dieses virtuellen Hosts
  DocumentRoot /var/www/test

  # Möglichst das normale Proxyverhalten des Proxymoduls ausschalten,
  # damit keine Fremden den Webserver als offenen Proxy missbrauchen!
  ProxyRequests Off

  # Loglevel normalerweise bei "warn", loggt also recht viel mit. Um
  # weniger zu loggen empfiehlt sich "emerg".
  LogLevel warn

  # Beim Loggen sollte nur wenig mitgeloggt werden, hier nur 
  # Quell-IP-Adresse, Zeit und Status
  CustomLog /var/log/apache2/ajaxterm-access.log "%a %t %s"
  ErrorLog /var/log/apache2/ajaxterm-error.log

  # Hier die eigentlichen Weiterleitungen auf die intern laufende
  # Anwendung
  ProxyPass /ajaxterm/ http://localhost:8022/
  ProxyPassReverse /ajaxterm/ http://localhost:8022/
</VirtualHost>

Weblinks

Vorlage:Weblinks1