SSH Reverse Port Forwarding con PuTTy: cómo especificar la dirección de enlace

16

Usando Putty, he configurado un proxy inverso que me permite conectarme al puerto 8080 del servidor en el server.tldpuerto 80 de la máquina que inició la conexión SSH.

El servidor me permite conectarme localhost:8080y devuelve el resultado de initiator:80cuando me conecto en el servidor.

Esta pregunta dice habilitar GatewayPorts y vincular a todas las direcciones.

Usando Putty, ¿cómo puedo exponer el puerto 8080 en el servidor para que cuando llegue una solicitud a través de la interfaz externa (por ejemplo, una solicitud web), el puerto se envíe al initiator:80?

ingrese la descripción de la imagen aquí

Darbio
fuente
¿Puede detallar exactamente lo que está poniendo en el cuadro de diálogo PuTTY para crear el túnel?
EightBitTony
Se agregó una captura de pantalla: los puertos son diferentes al texto de ejemplo, sin embargo, esto no permite que una solicitud en la interfaz externa se enrute a través del túnel (por ejemplo, 1.2.3.4:8080). Las solicitudes internas se enrutan (localhost: 8080).
Darbio
¿Qué hace netstat -an | grep 8080 show? Y cuando dices no permitir, ¿qué quieres decir? ¿Tiene un firewall que bloquea las conexiones al puerto 8080?
EightBitTony

Respuestas:

17

Hay dos casillas de verificación al configurar el túnel PuTTY,

  • Los puertos locales aceptan conexiones de otros hosts
  • Los puertos remotos hacen lo mismo (solo SSH-2)

el segundo de ellos hace lo que necesitas.

Acabo de probarlo

Diálogo de túneles PuTTY,

  • Marque Puertos remotos ...
  • Ponga 8080 en el puerto de origen
  • Ponga 127.0.0.1:80 en el puerto de destino
  • Seleccione el botón de radio 'Remoto'
  • Haga clic en Agregar
  • Conectar

Funciona bien, aquí está el netstat resultante,

# netstat -an | grep 8080
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN
tcp6       0      0 :::8080                 :::*                    LISTEN

También puede usar plink.exe que viene con PuTTY, por ejemplo,

plink -R *:8080:localhost:80 [email protected]

que funciona bien también

# netstat -an | grep 8080
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN
tcp6       0      0 :::8080                 :::*                    LISTEN

Si todavía obtiene 127.0.0.1:8080 en el host, GatewayPorts todavía está configurado como no en su configuración sshd.

Además, no olvide actualizar el firewall en el servidor de destino para permitir conexiones externas al puerto 8080.

OchoBitTony
fuente
No, ¿no parece darme el mismo comportamiento que ssh -R *:8080:localhost:80debería?
Darbio
GatewayPorts está configurado en yes. Funciona con el ssh -R \*:8080:localhost:80comando, simplemente no podía resolverlo en PuTTy
Darbio
@Darbio, ¿alguna vez lo descubriste en masilla?
barlop
Utilizo mucho el reenvío de puertos, generalmente en modo local2remote (vnc, proxy, etc.), y esta vez no funcionó el puerto local remoto2, no importa qué opción haya marcado, el puerto no aparece como abierto en el remoto. El uso plinkdirecto funcionó sin problemas al usar los mismos comandos que el ssh normal. No podía entender lo que hizo que la masilla hacer que no hacer el trabajo ...
m3nda