Funciones avanzadas de SSH: reenvío remoto de puertos
En el escenario del puerto local, es posible establecer una conexión SSH desde el servidor B al servidor A, pero ¿qué pasa si no hay conexión del servidor B al servidor A, solo una conexión del servidor A al servidor? ¿B? (Por ejemplo, la máquina de desarrollo puede acceder al servidor, pero el servidor generalmente no puede acceder a la máquina de desarrollo local)
Supongamos que la IP del servidor A es 192.168.58.101 y la IP del servidor B es 192.168.58.103
Ejecute el siguiente comando en el Servidor A:
Ejecute el comando anterior en el Servidor A
El comando anterior establece el reenvío y transferencias de puertos remotos 9906 en el servidor remoto Servidor-B Todos los datos del puerto se reenvían al puerto 3306 192.168.58.101 en el Servidor-A
Ejecute el comando en el Servidor-B
Puede conectarse a el servidor MySQL en el Servidor-A
Puede conectarse al servidor MySQL en el Servidor-A
Puede usar el comando "servidor MySQL" en el servidor remoto para conectarse al servidor MySQL servidor en el Servidor-A.
El reenvío de puertos local y el reenvío de puertos remotos se pueden utilizar juntos para implementar el reenvío en cadena. Supongamos que el host A está en el trabajo, el host B está en casa y el host C es un host remoto en la nube. El servicio Node.js de la sección anterior se ejecuta en el host A y necesita acceder al servicio en el host B. Dado que A y B no están en la misma red y el host A no tiene una dirección IP pública separada, no hay acceso directo al servicio.
Una solicitud enviada al puerto 4000 del host B se reenviará a través del puerto local al puerto 3000 del host remoto en la nube C.
Con el reenvío de puerto remoto, una solicitud enviada al puerto 3000 del host C remoto en la nube se reenviará al puerto 2000 del host A.
De esta manera, el servicio en el host A puede acceder al host B a través de http://localhost:4000.