the - Túnel SSH: local=> gateway=> servidor MySQL
server public key has changed workbench (3)
Necesito acceder a una base de datos MySQL en un servidor remoto en mi laboratorio. Solo se puede acceder al servidor una vez que inicie sesión en un servidor de puerta de enlace en la red remota:
local server => gateway server => MySQL server.
Puedo ssh a la puerta de enlace utilizando el puerto 24222.
Estoy usando el módulo PERL DBI . Esto es lo que uso para conectarme cuando estoy en el laboratorio:
my $host="1.2.3.4";
my $database="dbname";
my $user="user";
my $pw="pass";
my $table="table";
Me imagino que tengo que configurar un túnel a través del servidor de puerta de enlace al servidor de base de datos. ¿Cómo hago para hacer eso? Si la base de datos MySQL estuviera en la puerta de enlace, podría abrir un túnel así:
$ ssh -f user@gateway -L 3307:127.0.0.1:3306 -N
¿Cómo puedo modificar esto para hacer un túnel a través del puerto abierto 24222 en la puerta de enlace a través del servidor MySQL en 1.2.3.4?
ACTUALIZAR:
Usando la respuesta de @anttir conseguí que funcionara de la siguiente manera
Configurar el túnel:
$ ssh -fN -p 24222 [email protected] -L 3307:1.2.3.4:3306
Configure las variables de script:
my $host="127.0.0.1"; my $port = 3307;
Con el comando:
$ ssh -f user@gateway -L 3307:1.2.3.4:3306 -N
Esto indica que todas las conexiones al cliente localhost 3307 se reenviarán a través del túnel SSH a la puerta de enlace y luego se conectarán al host 1.2.3.4 al puerto 3306.
Editar: Si el SSH está en el puerto 24222 entonces
$ ssh -f user@gateway -p 24222 -L 3307:1.2.3.4:3306 -N
Si necesita usar varios saltos para acceder al servidor MySQL, primero recomiendo crear el archivo .ssh / config y usar ProxyCommand de esta manera:
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
Entonces el puerto de adelante como tal:
ssh -f mysql_access_server -L 3309:sqlmaster.example.com:3306 -N
Entonces puedes acceder al servidor MySQL asi:
mysql --user=root --host=127.0.0.1 --password=root --port=3309 some_db_name
Utilizando el túnel:
ssh -f user@gateway -L 3307:1.2.3.4:3306 -N
Podrá conectarse a la base de datos en el puerto localhost 3307