Wie verwende ich SSH ProxyCommand, um eine Verbindung zum Remote-MySQL-Server hinter einem Bastion-Host herzustellen?

Wie verwende ich SSH ProxyCommand, um eine Verbindung zum Remote-MySQL-Server hinter einem Bastion-Host herzustellen?

Es handelt sich hierbei um drei Maschinen.

  1. Localhost, wo ich meine Entwicklung durchführe. Auch bekannt als Laptop.
  2. Bastion-Host, mit dem Sie sich zuerst verbinden müssen. Auch bekannt als Sprung.
  3. MySQL-Server, mit dem ich eine Verbindung herstellen möchte. Auch bekannt als DB.

Mein öffentlicher SSH-Schlüssel befindet sich beim Sprung in /home/myusername/.ssh/authorized_keys.

Meine ~/.ssh/config hat Folgendes:

Host jump
    HostName jump.domain.com
    User myusername
    IdentityFile ~/.ssh/myprivatekey

Ich kann ssh jumpund komme gut zum Springen.

Welchen SSH-Befehl muss ich im Terminal auf dem Laptop ausführen, um eine Verbindung vom Laptop zur DB herstellen zu können über

mysql -h 127.0.0.1 -P 3308

Ich brauche einen SSH-Tunnel und eine Portweiterleitung, aber die Syntax muss ich noch richtig hinbekommen. Ich möchte 3308 für die Produktionsdatenbank und 3307 für die Staging-Datenbank verwenden und führe die lokale MySQL-Datenbank auf 3306 aus, weshalb die Portweiterleitung auf nicht standardmäßige MySQL-Ports erfolgt.

Antwort1

Das hier ist, was ich letztendlich verwendet habe:

ssh -f -L3307:staging.mysql-server.com:3306 jump sleep 10000000
ssh -f -L3308:production.mysql-server.com:3306 jump sleep 10000000

welches ist vonhttp://csce.uark.edu/~kal/info/private/ssh/ch09_02.htmAbschnitt 9.2.6

Hinweis: Im Gegensatz zu meiner Frage ist kein Proxy-Befehl erforderlich, sondern nur die richtige Kombination von SSH-Befehlszeilenoptionen.

Antwort2

Der Befehl lautet ssh -fL <mysql db port>:<mysql server url>:<mysql db port> <username>@<bastian url> '<remote command>'.

Quelle

Antwort3

Sie können die folgende .ssh/config-Datei verwenden, vorausgesetzt, Sie stellen über Maschine B eine Verbindung von Maschine A zu C her

Host B
  User username_on_b
  Hostname ip_of_b
  IdentityFile ~/.ssh/key_for_b

Host C
  User username_on_c
  Hostname ip_of_c
  IdentityFile ~/.ssh/key_for_c
  Localforward 3308 ip_of_your_sql_server:3306
  Proxyjump B
  # or old-fashion
  # Proxycommand ssh B nc %h %p

Dann tippt man einfach von A aus:

ssh C

Dann können Sie von A aus

mysql -P 3308 -H localhost

verwandte Informationen