Подтвердить что ты не робот

Подключение MySQL через туннель SSH - как указать другой сервер MySQL?

У меня есть ~ 50 баз данных, настроенных для разных имен хостов, с требованием подключения к ним через туннель SSH.

Например:

  • Хост SSH в ssh.example.com

  • Хост MySQL в mysql1.example.com

Мне удалось создать туннель, используя autossh (веб-сервер под управлением Debian), но я не могу понять, как подключиться к определенному имени хоста MySQL "за" туннелем SSH.

Ввод lsof -i -n | egrep '\<ssh\>' подтверждает, что туннель работает (отправляет порт 3307 на порт 3306 ssh.example.com)

Поэтому, когда я пытаюсь mysql -h 127.0.0.1 -P 3307, я получаю Connection отказано. Не слишком странно, так как это не сервер MySQL.

Мой вопрос вам, ребята:

Как указать хост mysql1.example.com ПОСЛЕ создания туннеля SSH? Я пробовал искать везде, но, похоже, не понимаю.

4b9b3361

Ответ 1

Решил! Дело в том, чтобы подключиться к правильному серверу при создании самого туннеля - должно было видеть, что он приходит.

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

Тогда mysql -h 127.0.0.1 -P 3307 работал по назначению.:)

Ответ 2

У меня есть хороший блог о том, как подключиться к MySQL, используя SSH-туннель. Это очень хорошо объяснено здесь.

Команда для подключения к туннелю SSH:

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

Команда для подключения к MySQL:

localhost:[listening port]

Ответ 3

Если у вас нет прямого доступа к mysql-server, вы используете jump-server.

На вашем компьютере вы подключаетесь (ssh) к серверу перехода и оттуда вы подключаетесь к своему mysql-server.

Этого можно избежать, используя ssh- tunneling.

Предположим, что ваш

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

Просто откройте ssh client (Putty в windows или терминале в linux/ios).

Тип:

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

После этого вы можете использовать localhost и local-port для прямого доступа к mysql-серверу на удаленном компьютере.

Eg. Ваш Jdbc-url для доступа к базе данных mysql в этом случае будет

jdbc:mysql://localhost:[local-port]/[database-name]

Ответ 4

Я создал туннель для БД с помощью этой команды

ssh  -L 10000:localhost:3306  [email protected]<ip addess to connect DB> -N -f

-L - это локальный хост-порт, который определяется пользователем. u может предоставить любой номер порта.

от 0 до 65535. От 0 до 1023 зарезервированы.

используете ли вы аутентификацию на основе ключа на сервере, вы должны

укажите такой ключ.

ssh -i <path of the private key>  -L 10000:localhost:3306  [email protected]<ip addess to connect DB> -N -f