Sim, você deve especificar um IP e uma porta de destino ao usar o encaminhamento 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, apenas o endereço de ligação é opcional.
Não, você não pode especificar um host ou porta de destino ao usar o encaminhamento dinâmico. No encaminhamento dinâmico, o SSH atua como um proxy SOCKS. Novamente da página de manual (ênfase minha):
-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.
Com -L
, o SSH não tenta entender o tráfego. Apenas envia tudo o que recebe na porta local para a porta de destino - você determina a porta de destino no momento em que a conexão é feita. Com-D
, o SSH atua como um servidor proxy e, portanto, pode manipular conexões de várias portas (por exemplo, um navegador configurado para usá-lo como um proxy SOCKS pode acessar HTTP, HTTPS, FTP etc. na mesma conexão). E, como em outros servidores proxy, ele usará o tráfego para determinar o destino.