Was bedeutet "bind_address" bei der SSH-Portweiterleitung?

7

In der lokalen SSH-Weiterleitung:

 -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.  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 a connection is made to host port hostport from the remote machine.  Port
         forwardings can also be specified in the configuration file.  IPv6 addresses can be specified by enclosing the address in square brackets.
         Only the superuser can forward privileged ports.  By default, the local port is bound in accordance with the GatewayPorts setting.  However,
         an explicit bind_address may be used to bind the connection to a specific address.  The bind_address of “localhost” indicates that the listen‐
         ing port be bound for local use only, while an empty address or ‘*’ indicates that the port should be available from all interfaces.

*Was bedeutet unter "eine leere Adresse oder gibt an, dass der Port über alle Schnittstellen verfügbar sein soll" "alle Schnittstellen"? Bedeutet dies, dass alle Netzwerkschnittstellen auf dem lokalen Host mehrere Netzwerkschnittstellen haben können und der Port portmit allen Netzwerkschnittstellen auf dem lokalen Host verwendet werden kann?

Bedeutet in "Die Bindungsadresse von localhostgibt an, dass der Überwachungsport nur für die lokale Verwendung gebunden ist" eine bestimmte Netzwerkschnittstelle auf dem lokalen Host?

Kann bind_addressauf eine Netzwerkschnittstelle auf einem anderen Host als dem lokalen Host verweisen?

Tim
quelle

Antworten:

8

Im Allgemeinen ist eine Adressbindung eine Zuordnung zwischen einem Dienst (z. B. SSH) und einer IP-Adresse.

Ein Host kann mehrere IP-Adressen haben (z. B. 127.0.0.1, 192.168.1.2). Mit der Adressbindung können Sie einen Dienst für einige oder alle dieser Adressen ausführen.

Angenommen, Ihr Host ist mit zwei Netzwerkschnittstellen konfiguriert, von denen eine mit einem vertrauenswürdigen Netzwerk (z. B. 192.168.1.0/24) und die andere mit einem nicht vertrauenswürdigen Netzwerk (z. B. 192.168.2.0/24) verbunden ist. Angenommen, Ihr Host möchte nur SSH-Verbindungen vom vertrauenswürdigen Netzwerk akzeptieren. In diesem Fall binden Sie den SSH-Dienst nur an die Adresse des Hosts im vertrauenswürdigen Netzwerk (z. B. 192.168.1.2).

Mit localhostas bind_addresskönnen nur SSH-Clients, die auf dem lokalen Computer ausgeführt werden, eine Verbindung zum SSH-Dienst herstellen.

Dieser Typ
quelle
Sind "192.168.1.0" und "192.168.2.0" die IP-Adressen zweier Netzwerkschnittstellen auf dem lokalen Host?
Tim
Nein, das sind Netzwerke, keine Adressen. Siehe en.wikipedia.org/wiki/…
ThatGuy
1
@ThatGuy: Möglicherweise möchten Sie einen Auszug aus einer entsprechend vorbereiteten netstat -tnulpAusgabe hinzufügen . Das würde es einfacher / besser machen, Ihren Standpunkt zu veranschaulichen.
Alex Stragies
1

Alle Schnittstellen bedeuten ... alle Schnittstellen, möglicherweise mit Ausnahme spezieller Schnittstellen wie pflog0(der Paketfilter-Protokollschnittstelle). Lokale Verwendung bedeutet die Loopback-Schnittstelle, normalerweise lo0oder so, der die ::1Adresse zugewiesen werden sollte. Der Hauptunterschied besteht darin, ob entfernte Systeme auf den Port zugreifen können oder nicht. Mit localhost können nur Prozesse auf dem lokalen System eine Verbindung herstellen.

Die Bindungsadresse kann tatsächlich eine nicht lokale Adresse sein. Dies sollte jedoch so etwas wie einen bind: Can't assign requested addressFehler verursachen und wird daher nicht viel oder gar keinen Zweck erfüllen.

Thrig
quelle