Sì, è necessario specificare un IP e una porta di destinazione quando si utilizza l'inoltro locale. Da 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.
Chiaramente, solo l'indirizzo di bind è facoltativo.
No, non è possibile specificare un host o una porta di destinazione quando si utilizza l'inoltro dinamico. Nell'inoltro dinamico, SSH funge da proxy SOCKS. Sempre dalla manpage (enfasi sulla mia):
-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 non cerca di capire il traffico. Invia semplicemente tutto ciò che riceve sulla porta locale alla porta di destinazione - si determina la porta di destinazione nel momento in cui viene stabilita la connessione. Con -D
, SSH funge da server proxy e quindi può gestire connessioni da più porte (ad esempio, un browser configurato per usarlo come proxy SOCKS può quindi accedere a HTTP, HTTPS, FTP, ecc. Sulla stessa connessione). E come con altri server proxy, utilizzerà il traffico per determinare la destinazione.