Webseite hinter Firewall mittels ssh Tunnel erreichbar machen

Problem: Webserver hinter einer Firewall betreiben der von außen erreichbar sein soll (nennen wir ihn „lockedserver“) .

Lösung: ssh Tunnel

Vorraussetzung man hat einen zweiten Server laufen (nennen wir ihn „freeserver“) der aus den Internet per ssh  erreichbar ist und der auch noch auf einem zweiten Port (z.B. 8888) erreichbar ist.

auf dem locked server baut man einen ssh Tunnel mittels

ssh -N -R *:8888:localhost:80 freeserver.org

auf. Damit erreicht man dass alle Anfragen die http://freeserer.org:5555 ankommen an den lockedserver port 80 weitergeleitet werden.

Dies hat bei mir zunächst nur lokal auf dem freeserver.org funktioniert. Nachdem ich in die Datei /etc/ssh/sshd_config die Zeile

 GatewayPorts yes

eingefügt und den ssh service neu gestartet habe

sudo service ssh restart

funktioniert das auch aus dem Internet.

Um den Tunnel automatisiert per cronjob beim Reboot auf zu bauen könnte man den Login via username und password bei der ssh Verbindung durch ein RSA Schlüsselpaar ersetzen:

Mit

ssh-kegen -t dsa

ein Schlüsselpaar auf dem lockedserver erstellen und den öffentlichen Schlüssel (im home Verzeichnis des lockedserver ~/.ssh/id_dsa.pub ) auf den freeserver kopieren und mit

cat id_dsa.pub >> ~/.ssh/authorized_keys

den Schlüssel zu den authorisierten hinzufügen.

Mittels autossh könnte man den Tunnel noch stabiler machen gegen Verbindungsabbrüche.

Interessante Links dazu:

Setup a Unbreakable SSH Tunnel

SSH Tunnel – Local and Remote Port Forwarding Explained With Examples

Permanent SSH Tunnels with autossh

autossh – Automatically restart SSH sessions and tunnels

An illustrated guide, tutorial, how-to, on ssh tunneling

Bypassing corporate firewall with reverse ssh port forwarding

Raspberry Pi: Phoning Home Using a Reverse Remote Ssh Tunnel

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s