Да, вы должны указать IP-адрес и порт назначения при использовании локальной переадресации. От 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.
Ясно, что только адрес привязки является необязательным.
Нет, вы не можете указать хост или порт назначения при использовании динамической пересылки. В динамической пересылке SSH действует как прокси-сервер SOCKS. Снова из справочной страницы (выделение мое):
-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.
С помощью -L
SSH не предпринимается попытка понять трафик. Он просто отправляет все, что получает на локальном порту, на целевой порт - вы определяете целевой порт во время установления соединения. С помощью -D
SSH выступает в качестве прокси-сервера и, следовательно, может обрабатывать соединения из нескольких портов (например, браузер, настроенный для его использования в качестве прокси-сервера SOCKS, может затем обращаться к HTTP, HTTPS, FTP и т. Д. Через одно и то же соединение). И, как и с другими прокси-серверами, он будет использовать трафик для определения пункта назначения.