Sim, você precisa 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.
É evidente que apenas o endereço de ligação é opcional.
Não, você não pode especificar um host ou uma porta de destino ao usar o encaminhamento dinâmico. No encaminhamento dinâmico, o SSH age como um proxy SOCKS. Novamente da manpage (ê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. Ele 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 age 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. pela mesma conexão) . E como com outros servidores proxy, ele usará o tráfego para determinar o destino.