Tunneln mit OpenSSH
Möchte man auf einen Port eines Rechners von einem anderen Rechner aus zugreifen, dies allerdings nicht erlaubt oder durch eine Firewall geblockt ist, mit SSH der Zugriff auf den Rechner aber möglich ist, so kann man den gewünschten Port tunneln.
# ssh -L <Lokaler Port>:<Zielrechner>:<Port auf Zielrechner> <Benutzer>@<Tunnelrechner>
Möchte man zum Beispiel von Rechner B den Port 3306 benutzen und es ist möglich, sich auf Rechner B per SSH einzuloggen, so kann man dies wie folgt tun:
# ssh -L 3306:localhost:3306 <Benutzer>@<Rechner B>
Möchte man zum Beispiel auf Port 3306 von Rechner C zugreifen, welcher von Rechner B aus erreichbar ist, aber nicht von unserem Rechner, man kann sich aber auf Rechner B per SSH einloggen, so kann man das folgendermassen machen:
# ssh -L 3306:<Rechner C>:3306 <Benutzer>@<Rechner B>
Nun kann man in beiden Fällen auf den localhost Port 3306 zugreifen, welcher dann von OpenSSH auf den Zielrechner getunnelt wird.
Ist auf dem SSH-Server die Option AllowTcpForwarding no gesetzt, so wird das Tunneln nicht funktionieren. Ob dies der Fall ist, kann auf FreeBSD und OpenBSD in der /etc/ssh/sshd_config nachgeschaut werden.
Comments
Wenn ssh auf dem Firewall nicht offen ist, kann man auf dem Rechner B den ssh so einrichten, dass dieser z.B. auf den Port 443 (https) hört:
# sshd -p 443
Danach kann man den Rechner B so aufrufen (bsp. 3)
# ssh -L 3306::3306 @:443