Login-Shell per Webinterface

Dummerweise gehört ein SSH-Client nicht zur Standard-Windows-Installation und das nachträgliche Einspielen ist meist nicht immer möglich. Doch auch für solche Hürden gibt es ein Sprungbrett: Ajaxterm. Das in Python geschriebene Ajaxterm stellt über ein Webinterface wahlweise eine Login-Shell oder eine SSH-Shell zur Verfügung. Damit ist zum Einloggen auf dem heimischen Server nur ein Webbrowser notwendig – und der ist von der Stange in jedem Betriebssystem verfügbar.

Standardmäßig nutzt Ajaxterm in aktuellen Versionen die SSH-Shell als Login. Die für Ubuntu 6.10 verfügbare Ajaxversion-Version 0.7-3 ist veraltet und bietet noch keinen nativen SSH-Support. Ersatzweise installieren wir daher das für Debian verfügbare Paket, das auch die Start- und Stop-Skripte installiert.

wget http://ftp.de.debian.org/debian/pool/main/a/ajaxterm/ajaxterm_0.9-2_all.deb
dpkg -i ajaxterm_0.9-2_all.deb

oder

apt-get install ajaxterm

Ajaxterm horcht standardmäßig auf Port 8022 auf eingehende Verbindungen. Die Kommunikation zwischen dem Webbrowser und dem Webserver erfolgt aber unverschlüsselt. Damit die über das Netz übertragenden Daten geschützt werden, sollte man einen SSL-Webproxy installieren, der die Zugriffe dann auf den lokalen Port von Ajaxterm umleitet. Der Apache-Webserver bietet praktischerweise sowohl SSL- als auch Proxy-Funktionen.

Ist Apache2 noch nicht installiert, so erledigt dies der Befehl

apt-get install apache2.2-commom apache2 openssl

Für den Betrieb als SSL-Server setzt Apache ein Zertifikat voraus. Ein selbstsigniertes Zertifikat schnell selbst erzeugen und erspart den Aufwand der Verwaltung einer CA oder die Kosten, wenn das Zertifikat von einer externen CA signiert wird. Die Erzeugung dieses Zertifikats erfolgt mit

mkdir /etc/apache2/ssl/; cd /etc/apache2/ssl/; openssl req -new -x509 -days 365 -keyout server-rsa-key.pem -out server-cert.pem

Wenn ein Key in verschlüsselter Form vorliegt (und mit einer Passphrase gesichert ist), muß die Passphrase bei jedem Neustart des Apache Daemons neu eingegeben werden. Wenn der Key im Klartext vorliegt, ist das nicht notwendig. Um Key zu entschlüsseln und die Passphrase zu entfernen ist der folgende Aufruf notwendig:

openssl rsa -in server-rsa-key.pem > server-key.pem

Die Passphrase wird noch einmal benötigt, um den Key zu entschlüsseln. Jetzt kann der Key geladen werden, ohne das eine Passphrase abgefragt wird.

Anschließend aktiviert man für eine Neuinstallation noch das SSL- und das Proxy-Modul im Apache:

a2enmod ssl
a2enmod proxy
a2enmod proxy_http

In der Datei ports.conf definiert die zusätzliche Zeile listen 443 den HTTPS-Port. Zuletzt benötigt der Apache noch eine Konfigurationsdatei für den auf Port 443 horchenden virtuellen Server. Am einfachsten kopiert man dazu die Datei für den am Port 80 lauschenden Server und modifiziert diese:

cd /etc/apache2/sites-available/
cp default ssl

In der Datei ssl fügt man dann die Portnummern 443 zur Konfiguration des neuen virtuellen Servers hinzu:

NameVirtualHost *:443
<VirtualHost *:443>

Der HTTPS-Port lässt sich prinzipiell auf jeden anderen Port legen, die Wahl muss nur mit der in ports.conf übereinstimmen.

Zusätzlich fügt man in ssl noch folgende Zeilen hinzu:

SSLEngine On
SSLCertificateFile /etc/apache2/ssl/server-cert.pem
SSLCertificateKeyFile /etc/apache2/ssl/server-key.pem

ProxyRequests Off
<Proxy *>
Order Deny,allow
Allow from all
</Proxy>
ProxyPass / http://<server-ip>:8022/
ProxyPassReverse / http://<server-ip>:8022/

Der Befehl a2ensite ssl aktiviert nun die Konfiguration für den SSL-Betrieb.

Um die neue Konfiguration zu übernehmen, ist ein Neustart des Servers notwendig: /etc/init.d/apache2 restart. Der Aufruf des Server im Browser per HTTPS zaubert dann Ajaxterm auf den Schirm, in dem man nun seinen Usernamen und sein statisches Passwort eingeben kann. Praktische Hinweise zur Konfiguration liefert auch die Homepage von Ajaxterm.

Dieses Howto basiert auf diesem Artikel von Daniel Bachfeld.

Schreiben Sie einen Kommentar

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

* Die DSGVO-Checkbox ist ein Pflichtfeld

*

Zustimmung zur Datenspeicherung lt. DSGVO