through the remote not has failed could changed allow address mysql linux ssh-tunnel

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

  1. Configurar el túnel:

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

  2. 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