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

SSH tunnel: local => gateway => Сервер MySQL

Мне нужно получить доступ к базе данных MySQL на удаленном сервере в моей лаборатории. Сервер доступен только после входа на сервер шлюза в удаленной сети:

local server => gateway server => MySQL server.

Я могу использовать ssh для шлюза, используя порт 24222.

Я использую модуль PERL DBI. Это то, что я использую для подключения, когда я нахожусь в лаборатории:

my $host="1.2.3.4";
my $database="dbname";
my $user="user";
my $pw="pass";
my $table="table";    

Я предполагаю, что мне нужно настроить туннель через сервер шлюза на сервер базы данных. Как мне это сделать? Если база данных MySQL была на шлюзе, я мог бы открыть туннель следующим образом:

$ ssh -f [email protected] -L 3307:127.0.0.1:3306 -N 

Как я могу изменить это для туннеля через открытый порт 24222 на шлюзе через сервер MySQL на 1.2.3.4?


UPDATE:

Используя ответ @anttir, я получил его для работы следующим образом.

  • Настройте туннель:

    $ ssh -fN -p 24222 [email protected] -L 3307:1.2.3.4:3306
    
  • Настройте переменные script:

    my $host="127.0.0.1";
    my $port = 3307;
    
4b9b3361

Ответ 1

С помощью команды:

$ ssh -f [email protected] -L 3307:1.2.3.4:3306 -N 

Это означает, что все подключения к локальному клиенту 3307 клиента будут перенаправлены через туннель SSH на шлюз, а затем подключены к хосту 1.2.3.4 к порту 3306.

edit: Если SSH находится на порту 24222, то

$ ssh -f [email protected] -p 24222 -L 3307:1.2.3.4:3306 -N 

Ответ 2

Использование туннеля:

ssh -f [email protected] -L 3307:1.2.3.4:3306 -N 

вы сможете подключиться к базе данных на локальном порту 3307

Ответ 3

Если вам нужно использовать несколько переходов для доступа к серверу MySQL, я сначала рекомендую создать файл .ssh/config и использовать ProxyCommand следующим образом:

  Host gateway
     HostName example.com
     User foo
     Port 22
     IdentityFile ~/.ssh/id_rsa.pub

  Host mysql_access_server
      HostName example-web.com
      Port 22
      User foo
      ProxyCommand ssh -A gateway nc %h %p

Затем переместите порт следующим образом:

ssh -f mysql_access_server -L 3309:sqlmaster.example.com:3306 -N

Затем вы можете получить доступ к серверу MySQL следующим образом:

mysql --user=root --host=127.0.0.1 --password=root --port=3309 some_db_name