SSH Forwarding (Portweiterleitung via SSH)

Aus behwiki
Version vom 17. Mai 2023, 16:30 Uhr von Mariobeh (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

(Generell SSH Server @ Windows/Linux/Mac)

Oft ist man gezwungen, z. B. auf Proxmox zuzugreifen aber aus Sicherheitsgründen wird von einer öffentlichen Portfreigabe abgesehen. Demnach wäre eine Portweiterleitung nur über SSH interessant. Voraussetzung ist hier natürlich, dass SSH öffentlich freigegeben wurde. Dabei muss es nicht einmal direkt der Proxmox-Server, sondern es kann auch ein Zwischenserver, wie hier in diesem Beispiel erklärt wird, sein.

Ein SSH Forwarding von Client zu Server funktioniert hier im Beispiel wie folgt.

Der Client (localhost) möchte einen Port auf dem Server (lokal) öffnen. Hier wird zunächst ein SSH-Tunnel aufgebaut, der den Verkehr entsprechend portiert.

ssh -N -L 443:localhost:8006 user@beispielserver.de -p 2222

Hier wird der lokale Port 443 (HTTPS) auf dem am SERVER.DE befindlichen Port 8006 über SSH Port 2222 weitergeleitet. In diesem konkreten Beispiel lässt sich auf den Proxmox-Server zugreifen, ohne den Port nach außen hin öffnen zu müssen.

Sollte ein Zwischenserver vorhanden sein, der vor Proxmox agiert, sodass Proxmox keinen SSH-Port öffentlich geöffnet haben muss, muss zudem sichergestellt sein, dass der Zwischenserver mit dem gleichen SSH Forwarding versehen ist, sodass am Zwischenserver der Port 8006 auch zum Proxmox-Server auf Port 8006 führt. Dieser ist mit

ssh -N -L 8006:localhost:8006 sshuser@172.16.99.10 -p 22

einzureichen. In diesem konkreten Beispiel wird eben der Port 8006 auf dem Zwischenserver auf die IP und ebenfalls Port 8006 weitergeleitet.

Um diesen SSH Forwarding am Zwischenserver nicht immer aufmachen zu müssen, kann alternativ eine screen-Session mit genau dieser Portweiterleitung geschaffen werden oder idealer, die SSH-Verbindung im Hintergrund auszuführen mit

ssh -f -N -L 8006:localhost:8006 sshuser@172.16.99.10 -p 22

Auf dem Client kann auf die gleiche Weise agiert werden.

Hinweis: Beim Standard-Port 22 kann diese Port-Angabe auch weggelassen werden.

-L: local port forwarding

-f: Hintergrund

-N: kein einloggen erforderlich.

Demzufolge kann auf dem Client mit folgender Adresse nun entfernt der Port 8006 aufgerufen werden:

https://localhost
https://127.0.0.1

Den HTTPS-Standardport :443 schenken wir uns in diesem Fall.