Ja, Sie müssen eine Ziel-IP und einen Port angeben, wenn Sie die lokale Weiterleitung verwenden. Von 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.
Natürlich ist nur die Bindeadresse optional.
Nein, Sie können keinen Zielhost oder -port angeben, wenn Sie die dynamische Weiterleitung verwenden. Bei der dynamischen Weiterleitung fungiert SSH als SOCKS-Proxy. Nochmals von der Manpage (Hervorhebung meiner):
-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.
Mit -L
macht SSH keinen Versuch, den Verkehr zu verstehen. Er sendet einfach alles, was er auf dem lokalen Port empfängt, an den Zielport. Sie bestimmen den Zielport zum Zeitpunkt des Verbindungsaufbaus. Mit -D
fungiert SSH als Proxyserver und kann daher Verbindungen von mehreren Ports verarbeiten (z. B. kann ein Browser, der für die Verwendung als SOCKS-Proxy konfiguriert ist, über dieselbe Verbindung auf HTTP, HTTPS, FTP usw. zugreifen). Und wie bei anderen Proxy-Servern wird der Datenverkehr zur Bestimmung des Ziels verwendet.