====== SSH-Tunnel ====== Eine bestehende SSH-Verbindung lässt sich nicht nur zur Übertragung von Kommandozeilenbefehlen oder zur Dateiübermittlung per SCP verwenden. Man kann darüber auch Netzwerkverkehr tunneln. ===== Forward Tunnel ===== Die Richtungsangaben Forward und Reverse Tunnel richten sich danach, ob der getunnelte Netzwerkverkehr in die gleiche Richtung vermittelt wird, wie die SSH-Verbindung oder anders herum. ---- {{ :ssh_tunnel_1_forward.png?direct&800 }} Beim hier abgebildeten Forward Tunnel wird eine SSH-Verbindung von Host A zu Host B aufgebaut. Durch den Parameter ''-L 8081:9.8.7.65:80'' wird SSH angewiesen ein paar zusätzliche Dinge zu tun: * Auf dem SSH-Client (Host A) wird der Listening Port 8081 geöffnet. * Verkehr, der an diesem Port eingeht, wird durch die SSH-Verbindung übertragen und bei Host B weitervermittelt an 9.8.7.65 an Port 80. * Die Antwort auf diesen Verkehr nimmt selbstverständlich den Rückweg. ==== Nutzen ==== Auf diese Weise ist es möglich, auch von außerhalb des Netzwerks 9.8.7.0/24 Dienste auf dem Host 9.8.7.65 zu nutzen. Über weitere Anpassungen der Parameter ist es möglich, diese Dienste von überall aus zu erreichen, von wo aus man den gewählten Port (8081) an Host A erreichen, kann. Auch der Host 1.2.3.45 könnte auf 1.2.3.40:8081 zugreifen und würde in wirklichkeit mit 9.8.7.65:80 interagieren. ===== Reverse Tunnel ===== Beim Reverse Tunnel verhält es sich ähnlich wie beim Forward Tunnel. Der Unterschied dabei ist, dass der Tunnel in die entgegengesetzte Richtung zur SSH-Verbindung genutzt wird. ---- {{ ::ssh_tunnel_2_reverse.png?direct&800 |}} Von Host A wird eine SSH-Verbindung zu Host B aufgebaut. Durch den Parameter ''-R 8081:1.2.3.45:80'' passiert folgendes: * Auf Host B wird der Listening Port 8081 geöffnet. * Pakete die bei Host B an diesem Port ankommen, werden zurück durch die SSH-Verbindung getunnelt und dort von Host A an 1.2.3.45:80 weitervermittelt. ==== Nutzen ==== Auch hier wäre es umsetzbar, dass der Host 9.8.7.65 über den Tunnel den Dienst an 1.2.3.45:80 nutzt. Auf diese Weise können z. B. Dienste innerhalb eines Netzwerkes für Außenstehende verfügbar gemacht werden, wenn ein SSH-Server außerhalb dieses Netzwerks zur Verfügung steht. ===== Dynamic Tunnel ===== Anders als beim Forward und Reverse Tunnel muss das Ziel der Verbindung beim Dynamic Tunnel nicht vorher ausgewählt werden. ---- {{ ::ssh_tunnel_3_dynamic.png?direct&800 |}} Beim Dynamic Tunnel wird auf Seiten des SSH-Clients der gewählte Port (hier 8081) geöffnet. Dort eingehender Verkehr muss das Ziel der Verbindung in Form eines speziellen Headers enthalten. Einen Dynamic Tunnel (auch SOCKS-Tunnel) kann man mit allen Programmen nutzen, die in der Lage sind einen SOCKS-Proxy zu verwenden. Dazu zählen z. B. Browser wie Firefox oder Edge. Der Host und Port des Dynamic Tunnel müssen in den Einstellungen als SOCKS-Proxy angegeben werden.