Login
Newsletter
So, 20. Oktober 2002, 23:05

Remote Tunneling mit ssh

Man kennt das. Ausgerechnet der Arbeitsrechner, auf dem genau die Daten sind, an die man unbedingt gelangen wollte, steht hinter einer Firewall, die keine ankommenden Verbindungen ins lokale Netz erlaubt.

Doch diesem Problem kann man mit einem ssh-Tunnel vorbeugen, indem man das "Remote Port Forwarding" aktiviert, das seit geraumer Zeit zu ssh gehört. Doch zuerst sollte man ein paar Vorbereitungen treffen.

Auf dem Arbeitsrechner hinter der Firewall (A genannt) richtet man wie gewohnt den sshd so ein, daß er an Port 22 horcht und Verbindungen von Überall akzeptiert. In der sshd_config sollten also folgende Dinge stehen:

Port 22
ListenAddress 0.0.0.0

(Man kann später immer noch den Zugriff beschränken, aber erstmal alles zulassen.)

Damit das Forwarding auf der Server-Seite auch funktioniert, ist es bei älteren ssh-Version notwendig, den Parameter "GatewayPorts Yes" in die sshd_config einzufügen. Damit wird entfernten Rechnern erlaubt, sich mit einem Forwarding einzuloggen.

Nachdem man den ssh-Daemon gestartet hat, verbindet man sich von A auf einen Rechner vor der Firewall (genannt B), der von überall aus dem Internet erreichbar ist:

ssh -g -R 50022:localhost:22 login@B

Die Option "-g" erlaubt entfernten Rechnern (wie B) die Verbindung auf lokale weitergeleitete Ports (also 'geforwardete' Ports auf A).

Die Option "-R" gefolgt von dem Einwahl-Port 50022 des Rechners B, dem Rechner B bekannten Adresse (localhost) und dem Zielport 22 von A (an dem sshd horcht), bewirkt die eigentliche Weiterleitung.

Das funktioniert so: Auf Rechner B horcht die bestehende ssh-Verbindung an Port 50022 unter localhost. Falls sich jemand via "ssh -g -p 50022 login@B" dort einloggt, wird die Verbindung 'rückwärts' zu A durch die Firewall geleitet an Port 22. (login ist ein Loginname des Rechners A.)

Aber nochmal kurz und verständlich:

Von A (dem lokalen Rechner) aus (hinter der Firewall):

ssh -g -R remote_port:localhost:local_port login@B

Von irgendwo vor der Firewall auf B einloggen:

ssh login@B
ssh -g login@localhost

Und man landet auf dem Rechner hinter der Firewall.

Man kann so übrigens auch auf andere Dienste hinter einer Firewall zugreifen. Leitet man z.B. den Port 50080 zu Port 80 weiter, so kann man einen Webserver auch hinter einer Firewall ansprechen.

Kommentare (Insgesamt: 42 || Alle anzeigen )
Re: Frage (missgunst, Mi, 21. September 2005)
Re: Frage (hjb, Sa, 4. Juni 2005)
Frage (JohnBoy, Sa, 4. Juni 2005)
Re[9]: ssh-Tunneling (Thomas S, Do, 24. Oktober 2002)
Re[2]: man sollte dabei beachten (keinname, Mi, 23. Oktober 2002)
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten