¿Cómo uso ssh ProxyCommand para conectarme a un servidor MySQL remoto detrás del host bastión?

¿Cómo uso ssh ProxyCommand para conectarme a un servidor MySQL remoto detrás del host bastión?

Aquí intervienen tres máquinas.

  1. Localhost donde hago mi desarrollo. También conocido como computadora portátil.
  2. Host bastión donde debes conectarte primero. También conocido como salto.
  3. Servidor MySQL al que quiero conectarme. También conocido como DB.

Mi clave pública ssh está en /home/myusername/.ssh/authorized_keys al saltar.

Mi ~/.ssh/config tiene esto:

Host jump
    HostName jump.domain.com
    User myusername
    IdentityFile ~/.ssh/myprivatekey

Puedo ssh jumpy me pongo a saltar bien.

¿Qué comando ssh necesito ejecutar en la terminal de la computadora portátil para poder conectarme desde la computadora portátil a la base de datos a través de

mysql -h 127.0.0.1 -P 3308

Necesito un túnel SSH y un reenvío de puertos, pero todavía tengo que corregir la sintaxis. Quiero usar 3308 para la base de datos de producción y 3307 para la base de datos provisional y estoy ejecutando una base de datos MySQL local en 3306, razón por la cual se reenvía el puerto a puertos MySQL no estándar.

Respuesta1

Esto es lo que terminé usando:

ssh -f -L3307:staging.mysql-server.com:3306 jump sleep 10000000
ssh -f -L3308:production.mysql-server.com:3306 jump sleep 10000000

que es dehttp://csce.uark.edu/~kal/info/private/ssh/ch09_02.htmsección 9.2.6

Nota: Al contrario de la pregunta que hice, no se necesita ningún proxyCommand, solo la combinación correcta de opciones de línea de comando ssh.

Respuesta2

El comando es ssh -fL <mysql db port>:<mysql server url>:<mysql db port> <username>@<bastian url> '<remote command>'.

fuente

Respuesta3

Puede utilizar el siguiente .ssh/config suponiendo que se conecte de la máquina A a la C, a través de la máquina B

Host B
  User username_on_b
  Hostname ip_of_b
  IdentityFile ~/.ssh/key_for_b

Host C
  User username_on_c
  Hostname ip_of_c
  IdentityFile ~/.ssh/key_for_c
  Localforward 3308 ip_of_your_sql_server:3306
  Proxyjump B
  # or old-fashion
  # Proxycommand ssh B nc %h %p

Luego simplemente escribe desde A:

ssh C

Entonces desde A, puedes

mysql -P 3308 -H localhost

información relacionada