¿Cómo conectarse a una base de datos en una red privada desde una máquina local?

¿Cómo conectarse a una base de datos en una red privada desde una máquina local?

Actualmente tengo una imagen de Docker que ejecuta Alpine Linux dentro de una red privada. Tengo acceso de root a esa imagen de la ventana acoplable.

En la misma red privada, hay una instancia de base de datos. Solo los sistemas en la misma red pueden acceder a la base de datos (por ejemplo: la imagen de Docker antes mencionada)

En este momento, para depurar cosas dentro de la base de datos, tuve que utilizar SSH en la imagen de la ventana acoplable y luego ejecutar herramientas de línea de comandos desde dentro de esa imagen de la ventana acoplable. eso es bastante complicado

¿Hay alguna forma de conectarme a esa base de datos utilizando herramientas de desarrollo dentro de mi PC local? No estoy seguro de si el término para esto es reenvío de puertos o proxy.

Respuesta1

Supongo que te conectas así:

ssh user@docker

Necesitas -L:

ssh -L port1:server:port2 user@docker

¿Dónde server:port2está la dirección y el puerto de la base de datos como se ve desde el contenedor Docker (esta dirección se resolverá?allá).

Su local sshescuchará localmente en el puerto TCP port1. Tú eliges el puerto.

Ahora conéctese desde la computadora local a localhost:port1(o 127.0.0.1:port1) y la conexión llegará server:port2desde docker. La servermáquina lo verá venir de docker. Esto se llama "reenvío de puerto local".

De esta manera una herramienta local puede llegar a la base de datos remota. La herramienta debe conectarse a localhost:port1.

Notas:

  • Esto sólo funciona para TCP,no UDP.
  • Otras máquinas en su red local no podrán usar su computadora local como retransmisión para acceder a la base de datos. Probablemente así es como lo quieres. Si no es así, consulte esta pregunta:¿Puedo usar SSH para servir un recurso tunelizado en una red local?
  • Úselo ssh -N …para establecer un túnel.sin ejecutar un comando remoto.
  • Úselo autosshpara automatizar esto.
  • Los puertos con números inferiores a 1024 tienen privilegios. Como usuario normal, no puede vincularse a dicho puerto. Elija port1en consecuencia.
  • La configuración AllowTcpForwardingdel sshd_configservidor SSH ( dockeren su caso) se puede utilizar para no permitir el reenvío de puertos. El valor predeterminado es permitir, por lo que probablemente funcionará de inmediato.

información relacionada