Ajaxterm: Unterschied zwischen den Versionen

Aus Mikiwiki
Wechseln zu: Navigation, Suche
 
(13 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
 
<b>Ajaxterm</b> 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]].
 
<b>Ajaxterm</b> 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]].
  
== Konzept ==
+
== Installation ==
 +
 
 +
=== Ubuntu 8.04 Hardy Heron ===
 +
 
 +
$ <b>sudo apt-get install ajaxterm</b>
 +
 
 +
== Konfiguration ==
 +
 
 +
Die Konfiguration findet über die Datei "/etc/default/ajaxterm" statt.
 +
 
 +
Ajaxterm sollte möglichst mit den Rechten eines unprivilegierten Benutzers laufen.
 +
 
 +
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 Protokolldatei 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 (Shell-Befehl)|ssh]] die Weiterleitung auf einen anderen Rechner möglich ist. Auf Wunsch schreibt Ajaxterm eine eigene Protokolldatei - ü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.
 
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.
Zeile 12: Zeile 31:
 
</pre>
 
</pre>
  
== Installation ==
+
Dazu ist eine externe Umleitung über Apaches Proxy-Funktionen in der folgenden Art notwendig.
  
=== Ubuntu 8.04 Hardy Heron ===
+
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
 +
  <nowiki>ProxyPass /ajaxterm/ http://localhost:8022/</nowiki>
 +
  <nowiki>ProxyPassReverse /ajaxterm/ http://localhost:8022/</nowiki>
 +
</VirtualHost>
  
  $ <b>sudo apt-get install ajaxterm</b>
+
Besitzt der Apache HTTP Server noch kein SSL-Zertifikat (in der Konfigurationsdatei "apache.pem"), so muss nun über einen Aufruf des Skripts "apache2-ssl-certificate" ein solches Zertifikat erstellt werden. Beim Aufruf mit dem Parameter "-new" werden verschiedene Daten abgefragt - zwingend ist dabei nur der richtige Rechnername, denn sonst beschweren sich die Webbrowser bei jedem Ladevorgang über das Zertifikat und verweigern womöglich sogar die Zusammenarbeit mit dem HTTP-Server. Das selbst signierte SSL-Tertifikat hat Nachteile gegenüber einem von einer CA ausgestellten Zertifikat. Für den Terminalzugang zum eigenen Rechner reicht es aus, beim Zugriff über den Webbrowser die Fingerabdrücke (engl. fingerprints) zu prüfen. Ist das zu unpraktisch, bleibt nur der Kauf eines Zertifikats.
  
== Konfiguration ==
+
Das Proxymoduls muss im Apache HTTP Server erst aktiviert werden. Unter Debian Sarge beispielsweise werden mit folgenden Befehlen gleichzeitig die SSL- und die Proxymodule aktiviert. Sobald der Apache HTTP Server Anfragen auf dem SSL-Port 443 beantwortet, funktioniert auch der Ajaxterm-Zugriff über einen URL der Form https://test.xxx.yy/ajaxterm/
  
Die Konfiguration findet über die Datei "/etc/default/ajaxterm" statt.
+
$ <b>cd /etc/apache2/mods-enabled/</b>
 +
$ <b>for i in proxy.load proxy.conf ssl.load ssl.conf; \
 +
    do ln -s ../mods-available/$i .; done</b>
 +
$ <b>/etc/init.d/apache2 restart</b>
  
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:
+
Die Protokolldatei des Apache HTTP Servers wird sehr schnell sehr gross, weshalb es in der obigen Beispielkonfiguration auf das wesentliche verkürzt ist: Es werden hier nur noch Quell-IP-Adresse, Zeit und Status der Anfrage protokolliert. Der Loglevel sollte auch aus Geschwindigkeitsgründen von "warn" zu "emerg" eingeschränkt werden.
* "Color" schaltet den Farbmodus aus und wieder an.
 
* "GET" wechselt zwischen den HTTP-Methoden GET und POST, wobei POST der sicherere und deshalb voreingestellt ist.
 
* "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 (Shell-Befehl)|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.
+
Im Leerlauf, wenn der Benutzer keine Tasten drückt, wandern etwa ein bis drei KB pro Sekunde zwischen Server und Client hin und her. Bei der Übermittlung umfangreicher Ausgaben (z. B. von [[cat]] oder [[ls]]) ist das Verhältnis zwischen ausgegebenen und übertragenen Daten im HTTP-Modus GET etwa 1:5, d. h. das Fünffache der angezeigten Datenmenge wandert über die Leitung. Im HTTP-Modus POST verringert sich dieses Verhältnis auf knapp 1:2. Am schnellsten reagiert Ajaxterm natürlich auf dem Lovalhost-Port ohne Apache-/SSL-Umgebung.
  
== Verwendung ==
+
== Weblinks ==
  
 +
{{Weblinks}}
 +
{{url|GB|Ubuntu|eng|https://help.ubuntu.com/community/AjaxTerm|Ajaxterm}}
 +
{{Fuss}}
  
  
{{cat|Secure Shell}}
+
{{cat|Terminalemulation}}
 +
{{cat|Webbrowser}}

Aktuelle Version vom 6. August 2011, 17:11 Uhr

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.

Ajaxterm sollte möglichst mit den Rechten eines unprivilegierten Benutzers laufen.

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 Protokolldatei 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 Protokolldatei - ü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>

Besitzt der Apache HTTP Server noch kein SSL-Zertifikat (in der Konfigurationsdatei "apache.pem"), so muss nun über einen Aufruf des Skripts "apache2-ssl-certificate" ein solches Zertifikat erstellt werden. Beim Aufruf mit dem Parameter "-new" werden verschiedene Daten abgefragt - zwingend ist dabei nur der richtige Rechnername, denn sonst beschweren sich die Webbrowser bei jedem Ladevorgang über das Zertifikat und verweigern womöglich sogar die Zusammenarbeit mit dem HTTP-Server. Das selbst signierte SSL-Tertifikat hat Nachteile gegenüber einem von einer CA ausgestellten Zertifikat. Für den Terminalzugang zum eigenen Rechner reicht es aus, beim Zugriff über den Webbrowser die Fingerabdrücke (engl. fingerprints) zu prüfen. Ist das zu unpraktisch, bleibt nur der Kauf eines Zertifikats.

Das Proxymoduls muss im Apache HTTP Server erst aktiviert werden. Unter Debian Sarge beispielsweise werden mit folgenden Befehlen gleichzeitig die SSL- und die Proxymodule aktiviert. Sobald der Apache HTTP Server Anfragen auf dem SSL-Port 443 beantwortet, funktioniert auch der Ajaxterm-Zugriff über einen URL der Form https://test.xxx.yy/ajaxterm/

$ cd /etc/apache2/mods-enabled/
$ for i in proxy.load proxy.conf ssl.load ssl.conf; \
    do ln -s ../mods-available/$i .; done
$ /etc/init.d/apache2 restart

Die Protokolldatei des Apache HTTP Servers wird sehr schnell sehr gross, weshalb es in der obigen Beispielkonfiguration auf das wesentliche verkürzt ist: Es werden hier nur noch Quell-IP-Adresse, Zeit und Status der Anfrage protokolliert. Der Loglevel sollte auch aus Geschwindigkeitsgründen von "warn" zu "emerg" eingeschränkt werden.

Im Leerlauf, wenn der Benutzer keine Tasten drückt, wandern etwa ein bis drei KB pro Sekunde zwischen Server und Client hin und her. Bei der Übermittlung umfangreicher Ausgaben (z. B. von cat oder ls) ist das Verhältnis zwischen ausgegebenen und übertragenen Daten im HTTP-Modus GET etwa 1:5, d. h. das Fünffache der angezeigten Datenmenge wandert über die Leitung. Im HTTP-Modus POST verringert sich dieses Verhältnis auf knapp 1:2. Am schnellsten reagiert Ajaxterm natürlich auf dem Lovalhost-Port ohne Apache-/SSL-Umgebung.

Weblinks

Herausgeber Sprache Webseitentitel Anmerkungen
country GB.gif Ubuntu eng Ajaxtermwbm