Estoy tratando de entender la diferencia entre "reenvío de puerto local" y "reenvío de puerto dinámico".
En el comando ssh para "reenvío de puerto local", ¿siempre se requiere especificar el host de destino?
¿"Dinámico" en "reenvío de puerto dinámico" significa que, en el comando ssh para "reenvío de puerto dinámico", no hay necesidad de especificar el host de destino? en caso afirmativo, ¿cuándo se especifica el destino?
ssh
port-forwarding
Tim
fuente
fuente
Respuestas:
Sí, debe especificar una dirección IP y un puerto de destino cuando utilice el reenvío local. De
man ssh
:Claramente, solo la dirección de enlace es opcional.
No, no puede especificar un host o puerto de destino cuando utiliza el reenvío dinámico. En el reenvío dinámico, SSH actúa como un proxy SOCKS. Nuevamente de la página de manual (énfasis mío):
Con
-L
, SSH no intenta comprender el tráfico. Simplemente envía todo lo que recibe en el puerto local al puerto de destino; usted determina el puerto de destino en el momento en que se realiza la conexión. Con-D
, SSH actúa como un servidor proxy y, por lo tanto, puede manejar conexiones desde múltiples puertos (por ejemplo, un navegador configurado para usarlo como proxy SOCKS puede acceder a HTTP, HTTPS, FTP, etc. a través de la misma conexión). Y al igual que con otros servidores proxy, utilizará el tráfico para determinar el destino.fuente
-D
, tiene que hacerlo, para comprender dónde enviar los datos.Otra forma de aprender este concepto sería observar cómo se conecta un cliente al clúster de reducción de mapa elástico (EMR) de Amazon. EMR tiene un montón de aplicaciones locales que expone y normalmente se accede a ellas a través de túneles SSH.
Hay 2 opciones para un cliente: A) Comando SSH de reenvío de puerto local: ssh -i key.pem -L 8157: abcd: 8088 hadoop @ abcd
Aquí el cliente dice, por ejemplo, que 8157 en localhost se reenvía a abcd: 8088 El cliente tiene que hacer una solicitud al localhost: http: // localhost: 8157 Otras aplicaciones podrían estar escuchando en puertos como 8089,8090, y el cliente tiene que hacer conexiones ssh para cada uno de estos.
B) Puerto dinámico hacia adelante Aquí se usa un solo comando SSH: ssh -i key.pem -D 8157 hadoop @ abcd
Cualquier tráfico que ingrese en el puerto 8157 será enrutado a través del túnel ssh. El destino del tráfico será el destino de la URL. Por ejemplo, puede usar un cliente proxy en su servidor web y redirigir algunos URI http para usar el proxy. Puede acceder a todas sus aplicaciones en 8089,8090 a través de un solo comando.
Para referencia, consulte este documento: https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-web-interfaces.html
fuente