Utilice el reenvío de puertos remotos para reenviar datos de manera segura desde un cliente que se ejecute en el host servidor Secure Shell. Cuando se configura el reenvío de puertos remotos, se designa un puerto remoto arbitrario para el reenvío de datos y un host y un puerto de destino para recibir los datos.
El reenvío de puertos remotos funciona de la siguiente manera:
Cuando se establece la conexión Secure Shell, el servidor Secure Shell abre un Socket (zócalo) La combinación de un nombre de host (dirección IP o nombre DNS) y un número de puerto. Así se crea un identificador único que una aplicación cliente utiliza como punto final de comunicaciones. receptor en el host servidor Secure Shell usando el puerto receptor especificado.
Una aplicación cliente que se ejecute en el host servidor Secure Shell se configura para establecer una conexión con el puerto receptor (en lugar de hacerlo directamente al host y al puerto del servidor de la aplicación). Cuando el cliente establece una conexión, todos los datos se envían al puerto receptor y, a continuación, se redireccionan al servidor Secure Shell.
El servidor Secure Shell cifra los datos y los envía de manera segura a través del túnel SSH hasta el cliente Secure Shell.
El cliente Secure Shell recibe los datos, los descifra y los redirecciona al puerto y el host de destino (en el host cliente Secure Shell) que se utiliza por la aplicación de servidor.
Los datos de retorno de la aplicación de servidor se dirigen hasta el cliente Secure Shell, que los cifra y los envía de manera segura al servidor Secure Shell a través del túnel SSH. El servidor Secure Shell descifra los datos y los redirecciona a la aplicación cliente original.
La sintaxis general de línea de comando para el reenvío de puertos remotos es:
ssh -R listening_port:app_host:hostport user@sshserver
El siguiente diagrama ilustra una posible configuración de reenvío de puertos remotos.
El servidor de aplicación y el cliente Secure Shell se ejecutan en HostA. El servidor Secure Shell y el cliente de aplicación se ejecutan en HostB. Todos los datos enviados al puerto 2222 en el HostB se reenvían al puerto 222 en el HostA. En esta disposición, todos los datos en tránsito se cifran de manera segura. El siguiente comando configura esto:
ssh -R 2222:localhost:222 user@HostB