Połączenie MySQL przez tunel SSH - jak określić inny serwer MySQL?

Mam ~50 baz danych ustawionych pod różnymi nazwami hostów, z wymogiem połączenia się z nimi przez tunel SSH.

Na przykład:

  • Host SSH w ssh.example.com

  • Host MySQL w mysql1.example.com

Udało mi się utworzyć tunel za pomocą autossh( serwer WWW z Debianem), ale nie mogę dowiedzieć się, jak połączyć się z konkretną nazwą hosta MySQL "poza" tunelem SSH.

Wpisanie lsof -i -n | egrep '\<ssh\>' potwierdza, że tunel jest działa (wysyła port 3307 do ssh.example.com port 3306)

Więc kiedy próbuję mysql -h 127.0.0.1 -P 3307 dostaję odmowę połączenia. Nie jest to zbyt dziwne, ponieważ nie jest to serwer MySQL.

Moje pytanie do was:

Jak określić host mysql1.example.com Po utworzeniu tunelu SSH? Próbowałem szukać wszędzie, ale nie mogę tego rozgryźć.

Author: Trying, 2013-08-22

4 answers

Rozwiązałem to! Chodzi o to, aby połączyć się z odpowiednim serwerem podczas tworzenia samego tunelu-powinienem był to przewidzieć.

ssh -f [email protected] -L 3307:mysql1.example.com:3306 -N

Następnie mysql -h 127.0.0.1 -P 3307 działał zgodnie z przeznaczeniem. :)

 86
Author: Mad Marvin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-22 07:18:20

Mam fajny blog o tym jak połączyć się z MySQL za pomocą SSH tunnel. Jest to bardzo dobrze wyjaśnione tutaj .

Polecenie łączenia się z tunelem SSH:

ssh -L [listening port]:[REMOTE_MYSQL_HOST]:[REMOTE_MYSQL_PORT] [SSH_USER]@[SSH_HOST]

Polecenie łączenia się z MySQL:

localhost:[listening port]
 9
Author: sandra kevin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-16 17:39:44

Gdy nie masz bezpośredniego dostępu do mysql-server, używasz jump-server.

Z twojego komputera łączysz się (ssh) z serwerem jump i stamtąd łączysz się ze swoim mysql-server.

Można tego uniknąć za pomocą ssh- tunneling.

Przypuśćmy, że Twoje

       jump server is `jump-ip`
       mysql server is `mysql-ip`
       your machine is `machine-ip`

Wystarczy otworzyć klienta ssh (Putty w windows lub terminal w linux/ios).

Typ:

    ssh -L [local-port]:[mysql-ip]:[mysql-port] [jump-server-user]@[jump-ip]

Następnie możesz użyć swoich localhost i local-port, aby uzyskać bezpośredni dostęp do serwera mysql na zdalnej maszynie.

Np. Twój adres URL Jdbc do dostęp do bazy danych mysql, w takim przypadku będzie

jdbc:mysql://localhost:[local-port]/[database-name]
 5
Author: Ketan Keshri,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-07 12:02:10

Utworzyłem Tunnel do DB używając tego polecenia

ssh  -L 10000:localhost:3306  user@<ip addess to connect DB> -N -f

- L jest lokalnym portem hosta jest zdefiniowany przez użytkownika u może podać dowolny numer portu

Od 0 do 65535. 0 do 1023 są zarezerwowane.

Czy używasz uwierzytelniania opartego na kluczach na serwerze, powinieneś

Wspomnij o kluczu w ten sposób.

ssh -i <path of the private key>  -L 10000:localhost:3306  user@<ip addess to connect DB> -N -f
 1
Author: Shakeel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-19 09:38:22