ajaxterm – ssh via browserinterface

Vor ein paar Tagen habe ich ja über diese Firefox-Erweiterung berichtet. Dabei benötigt aber der Client eine direkte SSH-Verbindung über einen privilegierten Port. Einen anderen Ansatz kann man mit einer Webshell erreichen, wenn man den Connector auf einen Webserver auslagert und alle Befehle über Ajax im Browser getätigt werden. Dies hat natürlich den Vorteil, nicht mit diversen Firewalladmins in Konflikt zu kommen.
Einiges ist aber beim Aufbau des Weges zu beachten. Erstens muss die Apache wenigstens HTTPS-Verbindungen akzeptieren und das Webinterface sollte hinter einer .htaccess Sicherung verschwinden, um Gelegenheits-Hackern das Leben nicht all zu sehr zu vereinfachen. Generell rate ich aus Sicherheitsgründen von der Variante ab, lässt sich aber nicht immer vermeiden. Zumindest ist die Variante wesentlich sicherer als bei einem freien WEBSSH Dienst im Internet seine Daten einzugeben, der sicher fleißig Accountdaten mitschreibt. Ajaxterm ist schnell installiert/kopiert und muss auch nicht weiter angepasst werden. Spannender wird die Konfiguration des Webservers mit SSL und der Umleitung zum lokalen Socket.

In einer neuen VHOST-Datei könnte folgender Inhalt auftauchen. Dazu müssen aber noch ein paar Apache Module aktiviert werden. proxy,proxy_http und ssl (a2nmod)

NameVirtualHost *:443
ServerName localhost
SSLEngine On
SSLCertificateKeyFile ssl/apache.pem
SSLCertificateFile ssl/apache.pem
ProxyRequests Off
Order deny,allow
Allow from all
ProxyPass /ajaxterm/ http://localhost:8022/
ProxyPassReverse /ajaxterm/ http://localhost:8022/

Wenn dann die ajaxterm.py in der Konsole gestartet wurde, lauscht er lokal am port 8022, der wiederum an den Apache gebunden wurde.
Gebt Ihr nun die betreffende URL ein, sollte das oben gezeigte Fenster erscheinen.
http://domain.tld/ajaxterm/
Als Notlösung, um mal neinen Dienst neu zu starten, ist es ganz praktisch. Längeres Arbeiten ist so aber nicht möglich, wenn man effektiv arbeiten will.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.