Um auf Websites zugreifen zu können, die aus Ihrem Netzwerk nicht er­reich­bar sind, bietet sich ein SSH-Tunnel an: Statt die Website direkt aus Ihrem Netzwerk heraus an­zu­steu­ern, nehmen Sie beim SSH-Tunneling den Umweg über einen SSH-Server.

vServer / VPS
VPS un­schlag­bar günstig auf Dell En­ter­pri­se Servern
  • 1 Gbit/s, un­be­grenzt Traffic & mehr Cores
  • Min­des­tens 99,99% Ver­füg­bar­keit & ISO-zer­ti­fi­zier­te Re­chen­zen­tren
  • Aus­ge­zeich­ne­ter 24/7 Premium-Support mit per­sön­li­chem Berater

Was genau ist ein SSH-Tunnel?

Einen SSH-Tunnel können Sie sich, ganz wie einen echten Tunnel, als eine Ver­bin­dung zwischen zwei Punkten vor­stel­len. Der erste dieser Punkte, sozusagen der Start­punkt, ist ein Rechner, der sich im Nor­mal­fall in einem un­ge­si­cher­ten Netzwerk befindet. Ziel des Tunnels sind Server oder Netz­adres­sen, auf die Sie aus Ihrem Netzwerk heraus nicht zugreifen können oder wollen. Ein SSH-Tunnel fungiert also als Ver­bin­dung zwischen ver­schie­de­nen Servern und verknüpft hierzu die TCP-Ports zweier Rechner mit­ein­an­der. Grund­sätz­lich kann mit SSH-Tunneling jeder TCP-Port wei­ter­ge­lei­tet werden. Deshalb ist dieser Prozess auch als Port­wei­ter­lei­tung oder Port­for­war­ding bekannt.

Als SSH-Server können Sie einen be­lie­bi­gen Server verwenden. Dafür kann bei­spiels­wei­se auch ein Raspberry Pi SSH-Server ein­ge­setzt werden.

Tipp

Sie haben noch keine passenden Server gefunden? Kein Problem! Bei IONOS finden Sie den richtigen Cloud Server für jeden Anlass.

Doch was genau „trans­por­tiert“ ei­gent­lich ein SSH-Tunnel? Durch den SSH-Tunnel können bestimmte TCP-Pro­to­kol­le gesichert verwendet werden. Hierzu zählt bei­spiels­wei­se HTTP. Auch SMTP, ein wichtiges Protokoll für den E-Mail-Versand, nutzt SSH-Tunneling. Für die Si­cher­heit der im Tunnel über­tra­ge­nen Daten sorgt SSH.

Wofür werden SSH-Tunnels ein­ge­setzt?

Es gibt ver­schie­de­ne An­wen­dungs­sze­na­ri­en für das Port­for­war­ding mittels Secure Shell. In den meisten Fällen wird der SSH-Tunnel genutzt, um eine ver­schlüs­sel­te Ver­bin­dung zwischen einem lokalen Rechner, dem localhost, und einem ent­fern­ten Rechner auf­zu­bau­en. Durch den Umweg über dieses virtuelle Netzwerk können bestimmte Zu­griffs­be­schrän­kun­gen auf Websites auf­ge­ho­ben werden. Es hat dann den Anschein, als befänden Sie sich in dem Netzwerk, auf das Sie ei­gent­lich nur mit einem SSH-Tunnel zugreifen. Diese Art der Anwendung weist zwar Ähn­lich­kei­ten zu einem Virtual Private Network (VPN) auf, sollte aber nicht damit ver­wech­selt werden.

Wenn Sie Daten von Diensten trans­por­tie­ren, die ein un­ver­schlüs­sel­tes Protokoll verwenden, können Sie SSH-Tunneling benutzen, um den Da­ten­ver­kehr dennoch zu ver­schlüs­seln. Hierfür wird das so­ge­nann­te SSH File Transfer Protocol, kurz SFTP, ein­ge­setzt. Erhöhte Si­cher­heit bietet ein SSH-Tunnel außerdem beim Surfen in fremden Netz­wer­ken, etwa in Hotels. Für besonders hohe Si­cher­heit können Sie auf SSH-Keys für Ihre Netz­werk­ver­bin­dung setzen. Diese nutzen asym­me­tri­sche Ver­schlüs­se­lung.

Port­for­war­ding ist außerdem eine Technik, die von Ha­cke­rin­nen und Hackern gerne ein­ge­setzt wird. Mit SSH-Tunneling können Hin­ter­tü­ren in internen Netz­wer­ken eingebaut werden, mittels derer An­grei­fen­de ohne großen Aufwand auf interne Daten zugreifen können.

Tipp

Sie möchten die Vorteile von SSH auch für Ihre Website nutzen? Das IONOS Web­hos­ting-Paket be­inhal­tet ein SSL-Zer­ti­fi­kat und sorgt dafür, dass es Ihnen an nichts fehlt! Wollen Sie lediglich Ihre Website nach­rüs­ten, bietet Ihnen IONOS hierzu mit einem SSL-Zer­ti­fi­kat die Mög­lich­keit. Für eine erhöhte Si­cher­heit Ihrer Website, u. a. mittels Zwei-Faktor-Au­then­ti­fi­zie­rung, sorgt zudem der IONOS Domain Guard.

SSH-Tunnel unter Linux verwenden

Für die Ein­rich­tung eines SSH-Tunnels stehen Ihnen ver­schie­de­ne Methoden zur Verfügung.

Lokale Port­wei­ter­lei­tung

Die wohl am häu­figs­ten ver­wen­de­te Methode ist die so­ge­nann­te lokale Port­wei­ter­lei­tung. Hierbei können Sie von Ihrem Rechner aus auf lokale Netz­werk­res­sour­cen zugreifen, indem Sie einen Port Ihres lokalen Rechners an einen Port auf dem SSH-Server wei­ter­lei­ten. Dieser wird dann wiederum an einen Port auf dem Ziel­com­pu­ter wei­ter­ge­lei­tet.

Um eine lokale Port­wei­ter­lei­tung ein­zu­rich­ten, nutzen Sie in Unix-basierten Be­triebs­sys­te­men wie Linux oder macOS folgenden Ter­mi­nal­be­fehl:

ssh -L lokaler_port: remote_adresse: remote_port username@server.com

Zunächst müssen Sie bestimmen, welchen Port Sie wei­ter­lei­ten möchten (lokaler_port). Hierfür steht Ihnen eine beliebige Port­num­mer zur Verfügung, die größer als 1024 ist. Auf die Ports mit kleinerer Port­num­mer hat nur der Root Zugriff, da es sich um pri­vi­le­gier­te Ports handelt. Als nächstes müssen Sie die IP-Adresse des Ziel­ser­vers (remote_adresse) sowie Ihre Zu­gangs­da­ten (remote_port) eingeben.

Das Ganze wird deut­li­cher an einem Beispiel: Sie möchten sich mit einem Server in Ihrem Büro verbinden, der sich unter der Adresse 123.234.1.111 im Bü­ro­netz­werk befindet. Außerdem können Sie auf den SSH-Server Ihres Büros mit ssh.test.com zugreifen. Ihr Be­nut­zer­na­me ist „Testuser“. Der Befehl, um den SSH-Tunnel für Ihren Port 1234 ein­zu­rich­ten, lautet dann wie folgt:

ssh -L 8888: 123.234.1.111: 1234 Testuser@ssh.test.com

Nach Aus­füh­rung dieses Befehls können Sie über Port 8888 auf den Bü­ro­ser­ver zugreifen. Un­ter­stützt dieser zu­sätz­lich einen Web­zu­griff, können Sie auch über http://localhost:8888 auf den Bü­ro­ser­ver zugreifen. Der Da­ten­ver­kehr, den Sie an Port 8888 Ihres Computers senden, wird nun durch den SSH-Tunnel an Port 1234 des Ziel­rech­ners geleitet.

Remote-Port­wei­ter­lei­tung

Ge­wis­ser­ma­ßen das Ge­gen­stück zur lokalen Port­wei­ter­lei­tung bildet die so­ge­nann­te Remote-Port­wei­ter­lei­tung. Hierbei tunneln Sie einen Port des SSH-Servers an einen Port auf dem Client-Rechner. Dieser kann dann eine Ver­bin­dung zum Ziel­com­pu­ter, bei­spiels­wei­se Ihrem lokalen Rechner, her­stel­len. Diese Form des Port­for­war­dings wird in den meisten Fällen genutzt, um jemandem von außerhalb Zugriff auf interne Dienste zu er­mög­li­chen. Der Befehl, um einen Remote-SSH-Tunnel im Terminal ein­zu­rich­ten, sieht wie folgt aus:

ssh -R remote_port: ziel_adresse: ziel_port user@ssh_server_adresse

Möchten Sie nun bei­spiels­wei­se den Port mit der Port­num­mer 8080 abhören und die Daten an die Port­num­mer 3000 Ihres lokalen Rechners senden, sieht der Befehl wie folgt aus:

ssh -R 8080: 127.0.0.1:3000 user@remote.host

Im obigen Beispiel hat der SSH-Server die Adresse remote.host. Der externe Zugriff auf die Daten, die Sie tunneln, kann nun in einem Browser erfolgen, indem ebendiese Adresse auf­ge­ru­fen wird, gefolgt vom Port, den sie zuvor angegeben haben:

remote.host:8080

Wenn Sie Probleme damit haben, eine Remote-Port­wei­ter­lei­tung ein­zu­rich­ten, kann es gut sein, dass Sie noch die Kon­fi­gu­ra­ti­on Ihres SSH-Servers verändern müssen. Stan­dard­mä­ßig ist die Remote-Port­wei­ter­lei­tung nämlich de­ak­ti­viert. Dies können Sie ändern, indem Sie die Kon­fi­gu­ra­ti­ons­ein­stel­lung Gate­way­Po­rts in Ihrer SSH-Server-Kon­fi­gu­ra­ti­ons­da­tei ak­ti­vie­ren. Hierzu öffnen Sie die Datei und setzen die er­for­der­li­che Direktive Gate­way­Po­rts auf „yes“.

Tipp

Sie haben andere Probleme bei der Ver­bin­dung zu einem SSH-Server? Mit unseren prak­ti­schen Tipps zum Beheben von SSH-Fehlern finden Sie bestimmt eine Lösung.

Dy­na­mi­sche Port­wei­ter­lei­tung

Eine dritte Art, SSH-Tunnel zu verwenden, ist die dy­na­mi­sche Port­wei­ter­lei­tung. Diese er­mög­licht es Ihnen, einen Socket auf Ihrem lokalen Rechner zu verwenden, der als eine Art SOCKS Proxy fungiert. Alle An­wen­dun­gen, die den SOCKS Proxy nutzen, verbinden sich auf diese Weise mit dem SSH-Server und leiten Ihren gesamten Traffic durch den Tunnel. Ein häufiges Ein­satz­ge­biet dieser Art der Port­wei­ter­lei­tung ist das Tunneln des Traffics eines Web­brow­sers.

Um eine dy­na­mi­sche Port­wei­ter­lei­tung ein­zu­rich­ten, nutzen Sie einen Ter­mi­nal­be­fehl nach folgendem Schema:

ssh -D [lokale_ip_adresse:]lokaler_port user@ssh_server_adresse

Wenn Sie auf die Angabe einer lokalen IP-Adresse ver­zich­ten, wird au­to­ma­tisch die IP-Adresse 127.0.0.1, localhost, aus­ge­wählt. Wenn Sie bei­spiels­wei­se einen SOCKS Tunnel für Port 9090 ein­rich­ten wollen, lautet der Befehl für einen Server mit der Adresse remote.host wie folgt:

ssh -D 9090 -N -f user@remote.host

Im Anschluss an die Ein­rich­tung des SOCKS-Proxy müssen Sie die An­wen­dun­gen, die den Proxy nutzen sollen, ent­spre­chend kon­fi­gu­rie­ren.

SSH-Tunnel unter Windows verwenden

Auch bei Windows können SSH-Tunnel ein­ge­rich­tet werden. Da das Terminal unter Windows einen weniger großen Stel­len­wert einnimmt, gibt es prak­ti­sche Tools mit eigener GUI, z. B. PuTTY. Hiermit ist die Ein­rich­tung eines SSH-Tunnels ein Kin­der­spiel.

Nachdem Sie PuTTY her­un­ter­ge­la­den und er­folg­reich in­stal­liert haben, können Sie das Tool öffnen. Geben Sie im Startmenü bei „Hostname“ die IP-Adresse des SSH-Servers an, mit dem Sie sich verbinden möchten. Na­vi­gie­ren Sie an­schlie­ßend zu „Con­nec­tion/SSH/Tunnels“. Dort haben Sie die Mög­lich­keit, den Quell- und den Zielport in den Feldern „Source Port“ und „De­sti­na­ti­on“ anzugeben. Im Anschluss können Sie über den „Open“-Button die Ver­bin­dung aufbauen und im Browser wie gewohnt über 127.0.0.1:port_nummer auf den wei­ter­ge­lei­te­ten Port zugreifen.

Reverse-SSH-Tunnel

Für den Zugriff auf Rechnern mit privaten IP-Adresse benötigt man einen Reverse-SSH-Tunnel. Der interne Rechner, der von außerhalb nicht er­reich­bar ist, muss einen SSH-Tunnel umgekehrt, also reverse, zu einem externen Rechner aufbauen. Dieser muss im Gegensatz zu den bereits vor­ge­stell­ten SSH-Tunnels auch Ver­bin­dun­gen von externen Rechnern mit dem internen Rechner zulassen.

Folgender Befehl dient dazu, einen Reverse-SSH-Tunnel ein­zu­rich­ten:

ssh -Nf -R 2222:localhost:22 user@externer.rechner

Der externe Rechner kann sich im Anschluss durch

ssh localhost -p 2222

mit dem internen Rechner verbinden.

Zum Hauptmenü