SSH: Rückwärts durch den Tunnel

Heute mal wieder etwas zum Tunnelgraben… Wie ein Benutzer durch eine Firewall von innen nach außen tunneln kann, hatte ich einmal hier berichtet. Jetzt stehe ich vor dem umgekehrten Problem, einen Server hinter einer Firewall erreichen zu wollen, die keine Verbindungen hinein lässt – Fernwartung läßt grüßen. Wenn eine Verbindung jedoch von drinnen nach draussen möglich ist, hilft wieder einmal SSH weiter. Dazu müssen auf beiden Rechnern SSH-Server installiert und ein Benutzer hinter der Firewall behilflich sein. Das ganze geht wie folgt…

Nennen wir mal den Server, den wir hinter der Firewall erreichen wollen ServerBehindTheWall und den Benutzer UserWhoWantsAccess sowie den Computer mit dem wir zugreifen von Draußen wollen ClientWhoWantsAccess. Den Benutzer, der uns hinter der Firewall unterstützt, taufen wir UserBehindTheWall.

  1. Der Benutzer hinter der Firewall muss die Verbindung aufbauen. Er führt folgendes auf dem ServerBehindTheWallaus:
    ssh -nNT -R 6666:localhost:22 UserBehindTheWall@ClientWhoWantsAccess

    Dieser Aufruf sorgt dafür, dass Verbindungen auf Port 6666 am ClientWhoWantsAccess an den Port 22 auf ServerBehindTheWallumgeleitet werden. Die Parameter -nNT sind optional. Der Parameter -n führt dazu, dass SSH die Standardausgabe mit /dev/null verbindet; -N weist SSH an, nur den Tunnel aufbauen und keinen Befehlskanal aufzubauen und -T kein Pseudo-Terminal auf dem Remote-System zu allokieren.

  2. Der Benutzer vor der Firewall kann jetzt an ClientWhoWantsAccess seinen lokalen Port 6666 benutzen, um sich über den aufgebauten Tunnel mit dem SSH-Server auf ServerBehindTheWallzu verbinden:
    ssh -p 6666 UserWhoWantsAccess@localhost

Neben SSH – normalerweise auf Port 22 – funktioniert das ganze natürlich mit jedem anderen Dienst auf dem ServerBehindTheWall. So lassen sich z.B. Versionsverwaltungssysteme erreichen – vorrausgesetzt, jemand hinter der Firewall ist behilflich und initiiert die Verbindung nach Schritt 1.

Schreibe einen Kommentar