Comprender los túneles SSH

15

Tengo un servidor Linux (Ubuntu) al que solo tengo acceso root a través de ssh (puerto 22). En ese servidor hay una base de datos MySQL que escucha en el puerto 3306. ¿Es posible usar masilla (en mi máquina) y tunelización (en la máquina Linux) para crear un túnel desde un puerto local en mi máquina (digamos 4000), al servidor Linux en el puerto 22 y luego del servidor a sí mismo en el puerto 3306?

Muhammad Gelbana
fuente

Respuestas:

20

He dibujado algunos bocetos

La máquina, donde se escribe el comando ssh tunnel (o en su caso: se inicia Masilla con tunelización) se llama »su host« .

túnel ssh a partir de local


túnel ssh a partir de remoto

Introducción

  1. local: -L Specifies that the given port on the local (client) host is to be forwarded to the given host and port on the remote side.

    ssh -L sourcePort:forwardToHost:onPort connectToHostsignifica: conectarse con ssh a connectToHost, y reenviar todos los intentos de conexión al puerto local en la máquina llamada , a la que se puede acceder desdesourcePortonPortforwardToHostconnectToHost máquina.

  2. remoto: -R Specifies that the given port on the remote (server) host is to be forwarded to the given host and port on the local side.

    ssh -R sourcePort:forwardToHost:onPort connectToHostsignifica: conectarse con ssh a connectToHost, y reenviar todos los intentos de conexión al puerto remoto en la máquina llamadasourcePortonPortforwardToHost , a la que se puede acceder desde su máquina local.

Su ejemplo

La primera imagen representa tu situación. El cuadro azul llamado your hostes su máquina Windows desde la cual inicia Putty en su servidor Ubuntu, llamado remotehosten mi imagen. Las conexiones al puerto verde (en su caso, número de puerto 4000) se reenvían al puerto rosa MySQL 3306de la localhostmáquina de su servidor Ubuntu (es decir, el servidor Ubuntu mismo).

Para configurarlo con Putty

Inicie Putty e ingrese su configuración de conexión habitual (Nombre de host o dirección IP) En el árbol del lado izquierdo, navegue hasta

Conexión → SSH → Túneles

y cree un nuevo túnel local con el puerto de origen 4000(123 en la imagen) y el destinolocalhost:3306 (localhost: 456 en la imagen).

No olvides hacer clic en Agregar .

Luego, regrese a la sesión y haga clic en Guardar para mantener su configuración la próxima vez. Ahora puede usar la conexión guardada para iniciar sesión en su servidor y después de iniciar sesión con éxito, cada vez que se conecte al puerto 4000 en su host, realmente se conectará al puerto 3306 en el servidor Ubuntu.

crear túnel delantero con masilla

erik
fuente
Muy bien, gracias por la ilustración. Aprecio que hayas agregado túneles de tipo "remoto", que no cubrí en mis respuestas.
Guss
1
Esta respuesta es increíble
Mauricio Pasquier Juan
2
Impresionante y muy ilustrativa respuesta +1
rkachach 01 de
1
Cómo esto tiene tan pocos votos es una pena.
Ryan Fisher
1
Me encantan estos bocetos. La imagen vale más que mil palabras.
qartal
16

La respuesta simple es sí, pero tenga en cuenta que el túnel se inició realmente en su computadora. La forma en que funciona es que crea una conexión SSH al servidor (que es segura) y luego le indica al SSH que escuche un puerto de su lado y reenvíe cualquier conexión que ingrese, a un puerto específico en una dirección de host específica en el lado del servidor. El objetivo del túnel no necesita ser el mismo servidor; puede ser cualquier otra dirección válida que, en el caso de que no sea el servidor que ejecuta el servidor SSH, verá la conexión entrante como si viniera del servidor SSH en lugar de de su cliente

Para configurarlo, abra el cuadro de diálogo de configuración de Masilla, seleccione la configuración de la conexión que normalmente utiliza para acceder a su servidor y haga clic en "cargar" (y no en "abrir"). Luego, en el árbol del lado izquierdo, navegue a Conexión-> SSH-> Túneles y cree un nuevo túnel "local" con el puerto de origen 4000 y el destino "localhost: 3306" (porque la dirección de destino se resuelve en el servidor, desde el punto de vista del servidor, el puerto MySQL está en el host local). Luego navegue de regreso a "sesión" y haga clic en "Guardar" para mantener su configuración para la próxima vez. Ahora puede usar la conexión guardada para iniciar sesión en su servidor y después de iniciar sesión con éxito, cada vez que se conecte al puerto 4000 en su computadora, realmente se conectará al puerto 3306 en el servidor.

Si le gustan mucho los túneles y ejecuta un cliente MS-Windows, le sugiero que consulte Putty Tunnel Manager que utiliza Putty para configurar y ejecutar túneles fácilmente sin necesidad de tener una consola de masilla abierta.

Guss
fuente