Port Weiterleitungen über SSH (Ports tunneln)
2Mal schnell was in der mySQL-Datenbank auf dem Server ändern? Keine Lust phpMyAdmin zu installieren? Oder du willst einfach diverse Protokolle oder Services tunneln?
Anhand von Beispielen aus meinem Use-Case eben, hier ein kleines HowTo wie man einen entfernten mySQL-Server der auf Port 3306 (Default) lauscht via SSH auf Port 4321 auf dem eigenen Rechner tunnelt. Die Ports kann man natürlich je nach eigenen Anforderungen anpassen und das ganze funktioniert unter Linux und Mac in der Shell/Konsole. Unter Windows mit ssh-Terminal ggf. auch (nicht getestet).
Folgender Befehl tunnelt alle Anfragen auf localhost:4321 zum entfernten Host/Server auf Port 3306 (wo in meinem Falle mein mySQL Server lauscht). Für „hostname“ kann man natürlich auch ganz normal eine Domain oder IP-Adresse eintragen.
ssh root@hostname -p22 -g -L 4321:localhost:3306
Dann einfach ein mySQL-Tool seiner Wahl auf dem Desktop starten (z.B. MySQL-Workbench) und ganz einfach zum mySQL-Server auf localhost:4321 verbinden. FERTIG! 🙂
Man könnte natürlich so auch Webseiten tunneln, um z.B. Firewalls zu umgehen. Viel Spaß beim ausprobieren! 😉
Hier noch ne kleine Doku der ssh-Parameter die ich verwendet habe:
-g Allows remote hosts to connect to local forwarded ports. -L [bind_address:]port:host:hostport Specifies that the given port on the local (client) host is to be forwarded to the given host and port on the remote side. This works by allocating a socket to listen to port on the local side, optionally bound to the specified bind_address. Whenever a connection is made to this port, the connection is forwarded over the secure channel, and a con- nection is made to host port hostport from the remote machine. Port forwardings can also be specified in the configuration file. IPv6 addresses can be specified with an alternative syntax: [bind_address/]port/host/hostport or by enclosing the address in square brackets. Only the superuser can forward privileged ports. By default, the local port is bound in accordance with the GatewayPorts setting. However, an explicit bind_address may be used to bind the connection to a specific address. The bind_address of ``localhost'' indicates that the listening port be bound for local use only, while an empty address or `*' indicates that the port should be available from all interfaces. -p legt den SSH Port fest, an dem der entfernte SSH-Server lauscht.
Hi,
sollte man sich in deinem Beispiel mit seinem MySQL-Tool wirklich auf Port 1234 und nicht 4321 verbinden? Hab ich was übersehen?
Was mich noch interessiert: ist die Verwendung von der Option „-g“ beim ssh-Befehl für dieses Szenario wirklich notwending?
Hi,
nein, das war ein Tippfehler von mir! Danke für deine Aufmerksamkeit, ich habs natürlich sofort korrigiert! 😉
Für dieses Szenario ist „-g“ anscheinend doch nicht notwendig (gerade getestet).