Einführung
SSH kann dazu verwendet werden, Ports von und zu anderen Geräten weiterzuleiten.
So kann zum Beispiel via SSH auf eine Datenbank auf einem Server zugegriffen
werden, welche sonst nur Verbindungen von sich selber akzeptiert. Ein anderer
Anwendungsfall wäre die Bereitstellung eines Dienstes in einem Netzwerk, welches
die Clients im Netz wo der Server steht sonst keinen Zugriff hätte. Dies geht
über ein (längeren) SSH-Befehl. Braucht man das öfters, lohnt sich die
Konfiguration in der Datei ssh_config
.
Local Forwarding
Der Port port
auf der lokalen Seite wird auf den Host host
auf den Port
hostport
auf der remote Seite weitergeleitet. Auf der lokalen Seite ist danach
der Port port
auf der Adresse bind_address
(default: 127.0.0.1
) im
Listen-Mode.
Syntax:
ssh -L [bind_address:]port:host:hostport username@hostname
Beispiel: Der SSH-Client stellt den Port 80
des HTTP-Servers auf dem
SSH-Server auf Port 8080
bereit:
Den Port 8080
des Hosts 10.0.0.5
auf den remote Port 80
des Hosts 10.0.0.23
weiterleiten:
ssh -L 8080:10.0.0.23:80 emanuel@10.0.0.5
Einfacher mit der Konfigurationsdatei /etc/ssh/ssh_config/
bzw.
~/.ssh/config
:
Beispiel:
Verwendung:
Remote Forwarding
Der Port port
auf der remote Seite wird auf den Host host
auf den Port
hostport
auf der lokalen Seite weitergeleitet. Auf der remote Seite ist danach
der Port port
auf der Adresse bind_address
(default: 127.0.0.1
) im
Liste-Mode.
Syntax:
ssh -R [bind_address:] port:host:hostport username@hostname
Beispiel: Hinter einer Firewall steht ein Webserver, auf den nicht zugegriffen
werden kann. Es ist nur ein Zugriff auf ein SSH-Server möglich. Über
Portforwarding kann man aber über den SSH-Server auf den Port 80
des
Webservers zugreifen:
Den remote Port 80
des Hosts 10.0.0.23
über den SSH-Server 10.0.0.5
auf
den lokalen Port 8080
weiterleiten:
ssh -R 80:10.0.0.23:8080 emanuel@10.0.0.5
Einfacher mit der Konfigurationsdatei /etc/ssh/ssh_config/
bzw.
~/.ssh/config
:
Beispiel:
Verwendung:
Sicherheitshinweis
Wird die bind_address
nicht angegeben, lauscht der Socket auf die Adresse
0.0.0.0
. Der Service wird somit von aussen erreichbar. Will man nur lokal auf
den Port verbinden, gibt man als bind_address
die lokale Adresse 127.0.0.1
an. Über eine spezifische IP-Adresse des Servers kann man den Port auch fix an
eine Netzwerkkarte binden.
Hinweise
- Statt IP-Adresse können auch die Hostnamen verwendet werden.
- Um ein Socket auf einer Portnummer < 1024 zu eröffnen, muss man
root
sein.
Links und weitere Informationen
- Manpage zu
ssh(1)
: http://www.openbsd.org/cgi-bin/man.cgi?query=ssh&sektion=1 - Manpage zu
ssh_config(5)
: http://www.openbsd.org/cgi-bin/man.cgi?query=ssh_config&sektion=5