Sí, debe especificar una dirección IP y un puerto de destino cuando utilice el reenvío local. De man ssh
:
-L [bind_address:]port:host:hostport
Specifies that the given port on the local (client) host is to be
forwarded to the given host and port on the remote side.
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):
-D [bind_address:]port
Specifies a local “dynamic” application-level port forwarding.
This works by allocating a socket to listen to port on the local
side, optionally bound to the specified bind_address. Whenever a
connection is made to this port, the connection is forwarded over
the secure channel, and the application protocol is then used to
determine where to connect to from the remote machine. Currently
the SOCKS4 and SOCKS5 protocols are supported, and ssh will act
as a SOCKS server.
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.