SSH Web Gateway mit dem OpenSource Tool shellinabox
Der eigentlich für den direkten Konsolenzugriff über Web gedachte Dienst shellinabox lässt sich hervorragend dazu verwenden ein Gateway für SSH-Verbindungen herzustellen. Dies ist vor allem, dann interessant wenn des Öfteren Maschinen aus Netzen die keine Verbindungen zu Port 22 oder manuell definierten Ports über 1024 zulassen, gewartet werden müssen.
Aus Sicherheitsgründen sollten Sie so einen Dienst nur auf einer eigenen Maschine (z.B. virtuell) einrichten, für das zugrunde liegende System eigene sonst nicht verwendete Passwörter definieren und den shellinabox-Daemon nur mit eingeschränkten Rechten starten.
Der Service lässt sich unter https://tools.bartlweb.net/websshausprobieren.
Die HTML-Implementierung funktioniert in allen modernen Browsern und lässt sich via Apache mod_proxy ins Netz bringen. Die Eingabe von Sonderzeichen macht allerdings in Firefox Probleme, daher empfehle ich die Nutzung unter Chrome. Wer dennoch auf Firefox angewiesen ist kann zumindest mathematische Symbole anstelle der normalen Tasten über das Nummernpad eingeben.
Richten Sie eine eigene Linux-Installation für den Service ein. Dann laden Sie sich die aktuelle Version von shellinabox unter http://code.google.com/p/shellinabox/ herunter. Entpacken Sie den Inhalt des Archivs und kompilieren bzw. installieren Sie das Tool mit den im Verzeichnis des Quellcodes ausgeführten Befehlen ./configure, make undmake install.
Um shellinabox mit der gewünschten Konfiguration zu starten benötigen wir ein Wrapper-Skript die wir z.B. in das Home-Verzeichnis (hier/home/webssh/start_shellinabox.sh) unseres Benutzers, unter dem wir shellinabox ausführen wollen (hier webssh), legen. Darin rufen wir das Tool shellinabox auf und konfigurieren es wie folgt:
Daraus ergibt sich der folgende Inhalt für unser Wrapper-Skript:
Damit der shellinabox-Daemon nun bei jedem Start ausgeführt wird, rufen wir das angelegte Skript über die Crontab-Datei des Nutzers webssh auf.
Die Ausgabe des folgenden Shellskripts wird dem Nutzer bei Aufruf der Weboberfläche angezeigt. Hier fragen wir nach den Parametern des Remotehosts (Hostadresse, Hostport und Benutzername), fangen Anfragen an interne IPs ab und starten die eigentliche SSH-Verbindung. Um SSH-Verbindungen nicht aufgrund von wechselnden Hostkeys zu blockieren, akzeptieren wir unbekannte Hosts automatisch und verwerfen diese durch Speichern in /dev/null.
Kopieren Sie den nachfolgenden Code in die Datei/home/webssh/shellinabox_sshwrapper.sh.