Wer sich regelmäßig mit entfernten Linux Systemen beschäftigt und auch Dienste anbietet, kommt früher oder später in die Situation einen Port vom Server und/oder vom Client über einen SSH-Tunnel zu reichen zu müssen.
Ganz wichtig, es gibt 3 unterschiedliche Methoden und Richtungen wie ein Port/Dienst über den Tunnel gereicht wird.
- Local Port Forwarding – Hierbei wird bei dir auf dem PC ein Port geöffnet, welcher einen entfernten Dienst erreichen soll.
- Remote Port Forwarding – Du öffnest einen neuen Port auf dem entfernten System, welcher mit einem Port auf deinem Client verbunden ist.
- Dynamic Port Forwarding – Erstellt einen SOCKS Proxy.
Local Port Forwarding
Das Lokale Port Forwarding ist sicherlich die meist genutzte Variante. Dabei kann man entfernte Systeme und Dienste erreichen, ohne das diese Dienste öffentlich zugänglich sind. Es können sogar Dienst zugänglich gemacht werden, welche auf dem Zielsystem nur auf localhost (127.0.0.1) hören.
Was auch ganz wichtig zu verstehen ist, das dass Ziel nicht zwingend auf dem SSH-Ziel System sein muss, sondern auch ein System was erst von dem entfernten System erreichbar ist.
Beispiel: Wir haben einen Server, welcher über SSH erreichbar ist und einen Webserver hosted. Aber die Webseite ist nur für interne Zwecke und nicht öffentlich erreichbar.
ssh -L [LOCAL_IP:]LOCAL_PORT:DESTINATION:DESTINATION_PORT [USER@]SSH_SERVER ssh -L 4567:11.22.33.44:80 root@11.22.33.44
Wenn der SSH-Login erfolgreich ist, dann ist bei dir auf dem PC der Port 4567 (Lokal) verknüpft mit dem Webserverdienst auf dem entfernten System. Du kannst jetzt bei dir auf dem PC den Browser öffnen und „localhost:4567“ eingeben und du siehst die Webseite über eine sichere SSH-Verbindung.
Man kann aber auch ein entferntes System tunneln was nur von deinem Zielsystem erreichbar ist.
ssh -L 4567:192.168.150.10:80 root@11.22.33.44
Dabei wird der Port 4567 bei dir Lokal geöffnet und mit dem Ziel 192.168.150.10:80 verknüpft. Dein SSH Ziel muss natürlich das System „192.168.150.10:80“ erreichen können.
Remote Port Forwarding
Bei der Remote Port Forwarding Methode wird ein Lokaler Dienst auf dem entfernten System verfügbar gemacht.
Du hast in diesem Beispiel einen Webdienst bei dir auf dem Client/PC und möchtest das dass Zielsystem diesen Dienst öffnen kann. Dabei imitierst du die Verbindung und schiebst deinen Dienst dem entfernten System diesen unter.
ssh -R [REMOTE:]REMOTE_PORT:DESTINATION:DESTINATION_PORT [USER@]SSH_SERVER ssh -R 4567:127.0.0.1:80 root@11.22.33.44
Nach dem erfolgreichen Verbindungsaufbau ist auf dem Zielsystem der Port 4567 verfügbar und wird auf deinen Client auf den Port 80 weitergeleitet. Jetzt kannst du oder ein User auf dem Zielsystem auf dem Port 4567 den Dienst erreichen.
21. Juli 2023 um 08:51 Uhr
vielen Dank für diese wertvollen Informationen.
hab einen Server bei dem wir die mx-records bereits so angeglichen haben dass wir die mails auf einen GMail-Account rooten – m.a.W.
also die Mails von info@domain0.com
Also hier die Frage: was wenn ich Google-Mail ( und deren Workspace ) verwenden will, um für meine Mails von
a. Domain1.com
b. Domain2.com
den eingehenden und ausgehenden Mailtraffic so regeln will – sodass es geht wie folgt:_
info@domain1.com
info@domain2.com
Mein Freund der Serveradmin schlägt vor:
ich logge mich auf den server ein mit port 25 forward und verschicke es mit dieser Absenderadresse ganz einfach
forward local port 1125 auf den Server
dann 127.0.0.1:1125 als abgehenden mailserver nutzen
Die Methoden, dies umzusetzen wären;
a. mit Thunderbird
b. mit Alias bei Google -(Workspace)
wie genau würde das aussehen bei b. also dem Einrichten von Aliases bei Google-Workspace!?
12. März 2024 um 00:07 Uhr
Kewle Anleitung, weiter so!!
Ich hänge hier an einen Internetanschluss ohne öffentliche IP-Adresse und würde jetzt gerne hier eingehende BitTorrent-Verbindungen über einen SSH Tunnel von einem vserver aus tunneln.
Hab den SSH Dienst auf dem vserver soweit konfiguriert und mit dem Befehl:
$ ssh -R 51413:10.0.0.100:51413 root@vserver
den Tunnel von meinem local Client aus aufgebaut.
Ich nutze als BitTorrent Client transmission-gtk und hab dort den Port 51413 eingestellt.
Wenn ich jetzt den Button anklicke „Port testen“ sagt mir transmission-gtk „Port geschlossen“.
Aber keine Ahnung, wie da der Port getestet wird.
Meine Frage jetzt: Auf meiner Firewall die ich hier im LAN habe muss ich den Port 51413 freischalten?
Vorab Danke für die Hilfe.
Gruß.
Frank.