Reenvío de puertos SSH nativo (tunelización) en Windows 10

En este artículo, mostraremos cómo utilizar el servidor OpenSSH de Windows 10 integrado para reenviar puertos a través de un Túnel SSH. El reenvío de puertos SSH le permite tunelizar (reenviar) puertos de aplicaciones desde una computadora local a un servidor remoto y viceversa. La tunelización SSH anterior se usaba solo en el entorno Linux / Unix, pero hoy en día también puede usarla en Windows 10 / Windows Server 2016. A continuación, se muestra un caso de estudio sobre cómo utilizar una conexión RDP a través del túnel SSH (puerto TCP 22) en Windows.

La tunelización SSH se usa principalmente en los escenarios en los que necesita conectarse a una computadora remota detrás del firewall. Por ejemplo, tiene un servidor Windows con solo el puerto SSH abierto (TCP 22). Todos los demás puertos están bloqueados por un cortafuegos de hardware o un cortafuegos de Windows. Su tarea es conectarse al servidor de Windows mediante el cliente RDP. Parece imposible ya que el puerto de Escritorio remoto 3389 está bloqueado por el firewall. Sin embargo, puede utilizar la técnica de reenvío de puertos a través del túnel SSH.

Estos son los escenarios de uso típicos de la tunelización SSH:

  • Reenvío de TCP local es un reenvío de puerto local a un servidor remoto;
  • Reenvío de TCP remoto es un reenvío de puerto remoto a una computadora local;
  • Túnel SSH doble conecta computadoras sin ninguna dirección IP pública dedicada detrás de NAT a través de un servidor SSH (si la solución OpenVPN no es aplicable).

Acceso RDP a través del túnel SSH (reenvío TCP local)

En este modo, crea un puerto TCP local en su computadora. Todas las conexiones a este puerto se reenvían al puerto especificado en un servidor remoto a través del túnel SSH. En este ejemplo, crearemos un puerto local. 8888, y la conexión se reenviará al puerto RDP 3389 en una computadora remota con Windows. El esquema de conexión general se muestra a continuación.

túnel ssh de windows 10

Para crear un túnel SSH utilizando el cliente SSH de Windows 10 integrado (es parte de Windows a partir de Windows 10 1809 y Windows Server 2019), ejecute este comando:

ssh -L 8888:192.168.1.90:3389 [email protected]

Para que el túnel SSH funcione en segundo plano, agregue el -F parámetro.

Windows 10 conecta rsp a través de tunelización ssh

Para conectarse al escritorio de una computadora remota a través del túnel SSH, debe conectarse al puerto local 8888 de su computadora usando el cliente RDP (mstsc.exe):

127.0.0.1:8888

reenvío de puertos mstsc rdp

Inicie sesión en la computadora remota y trabaje de manera segura en la sesión RDP (pero recuerda que el puerto 3389 aún está cerrado por el firewall). Puede utilizar la herramienta TCPView para asegurarse de que la conexión RDP sea local (la conexión RDP la inicia el servidor SSH que se ejecuta localmente).

tcpview

Tenga en cuenta que si reenvía el tráfico de una aplicación sin cifrar, se transmitirá cifrado a través de las redes públicas. Dicho tráfico se cifrará en un extremo de su conexión SSH y se descifrará en el otro.

Otras computadoras de su red local también pueden usar este modo para conectarse a un servidor RDP incluso si la conexión directa no está permitida (tanto a través de SSH como a través de RDP). Para hacerlo, deben conectarse a través del cliente RDP al puerto número 8888 en su computadora con el túnel SSH creado:

mstsc.exe /v 10.10.1.220:8888

Reenvío de puertos mstsc rdp a través del túnel ssh en Windows 10

Reenvío de TCP remoto a una computadora local

Hay otro caso de uso de túnel SSH: el reenvío TCP remoto. Usando el túnel SSH, puede permitir que el servidor remoto acceda a un puerto local en su computadora o un puerto en otra computadora en su red local. Por ejemplo, desea que un servidor externo (200.168.1.90) acceda a su sitio de Intranet (no publicado en Internet). Para crear un túnel SSH inverso, use este comando:

ssh -R 8080:internalwww:80 [email protected]

Para acceder al sitio webwwww interno desde un servidor SSH remoto, basta con escribir esta dirección en el navegador: http://localhost:8080

Con los túneles SSH, puede crear cadenas de reenvío de puertos. Para habilitar o deshabilitar la tunelización SSH, agregue una de las siguientes directivas en el archivo de configuración de OpenSSH (% programdata% ssh sshd_config):

AllowStreamLocalForwarding yes
AllowTcpForwarding remote

Artículos Interesantes