una servidor remotas remota por para datos crear configurar conexiones conexion conectarse conectar con mysql ssh-tunnel

remotas - crear conexion a servidor en mysql workbench



Conexión MySQL a través del túnel SSH: ¿cómo especificar otro servidor MySQL? (4)

Tengo ~ 50 bases de datos configuradas en diferentes nombres de host, con el requisito de que me conecte a través de un túnel SSH.

Por ejemplo:

  • SSH host en ssh.example.com

  • MySQL host en mysql1.example.com

Logré crear el túnel utilizando autossh (servidor web que ejecuta Debian), pero parece que no puedo averiguar cómo conectarme a un nombre de host MySQL específico "más allá" del túnel SSH.

Escribiendo lsof -i -n | egrep ''/<ssh/>'' lsof -i -n | egrep ''/<ssh/>'' confirma que el túnel está funcionando (envía el puerto 3307 al puerto ssh.example.com 3306)

Entonces, cuando intento mysql -h 127.0.0.1 -P 3307 me niega la conexión. No es demasiado raro ya que no es un servidor MySQL.

Mi pregunta para ustedes:

¿Cómo especifico el host mysql1.example.com DESPUÉS de crear el túnel SSH? He intentado buscar en todas partes pero parece que no puedo resolverlo.


¡Resuelto! La cosa era conectarse al servidor correcto al crear el túnel en sí, debería haberlo visto venir.

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

Entonces mysql -h 127.0.0.1 -P 3307 funcionó como estaba previsto. :)


Cuando no tienes acceso directo a mysql-server , usas jump-server .

Desde su máquina, se conecta (ssh) al servidor de salto y desde allí se conecta a su mysql-server .

Esto puede evitarse usando ssh- tunneling .

Supongamos que tu

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

Simplemente abra el cliente ssh (Putty en windows o terminal en linux / ios).

Tipo:

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

Después de esto, puede usar su local-port y local-port para acceder directamente al servidor mysql en la máquina remota.

P.ej. Su url Jdbc para acceder a la base de datos mysql, en ese caso, será

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


He creado un túnel para la base de datos utilizando este comando

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

-L es el puerto del host local que está definido por el usuario u puede proporcionar cualquier número de puerto

entre 0 a 65535. 0 a 1023 están reservados.

Si está usando autenticación basada en clave para el servidor, debería

Menciona la clave así.

ssh -i <path of the private key> -L 10000:localhost:3306 user@<ip addess to connect DB> -N -f


Tengo un buen blog sobre cómo conectarme a MySQL usando el túnel SSH. Está muy bien explicado here .

El comando para conectarse al túnel SSH:

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

El comando para conectarse a MySQL:

localhost:[listening port]