Ich versuche die Unterschiede zwischen ssh -L und -D zu verstehen. Gibt es noch etwas anderes als das -D ist nur SOCKS?
Vielen Dank!
Ich versuche die Unterschiede zwischen ssh -L und -D zu verstehen. Gibt es noch etwas anderes als das -D ist nur SOCKS?
Vielen Dank!
Antworten:
ssh -L
öffnet einen lokalen Port. Alles, was Sie an diesen Port senden, wird über die SSH-Verbindung übertragen und verbleibt auf dem Server. Wenn Sie dies beispielsweise tun, ssh -L 4444:google.com:80
wenn Sie http://localhost:4444
in Ihrem Browser öffnen , wird die Google-Seite tatsächlich angezeigt.
ssh -D
öffnet einen lokalen Port, hat aber keinen bestimmten Endpunkt wie mit -L
. Stattdessen gibt es vor, ein SOCKS-Proxy zu sein. Wenn Sie z. B. öffnen, ssh -D 7777
wenn Sie Ihrem Browser mitteilen, dass er localhost:7777
als SOCKS-Proxy verwendet werden soll, werden alle Anforderungen Ihres Browsers durch den SSH-Tunnel geleitet. Für das öffentliche Internet ist es so, als würden Sie von Ihrem SSH-Server aus und nicht von Ihrem Computer aus surfen.
The bind_address of “localhost” indicates that the listening port be bound for local use only, while an empty address or ‘*’ indicates that the port should be available from all interfaces.
ssh -L 4444:google.com:80
funktioniert bei mir nicht, es ist ein weiterer Parameter zum Anmelden erforderlich, z. B. user@example.com
Gibt in SSH -D
eine lokale "dynamische" Portweiterleitung auf Anwendungsebene an.
SSH -D [bind_address:]port
Gibt eine lokale "dynamische" Portweiterleitung auf Anwendungsebene an. Dies funktioniert durch Zuweisen eines Sockets zum Abhören des Ports auf der lokalen Seite, der optional an die angegebene bind_address gebunden ist. Immer wenn eine Verbindung zu diesem Port hergestellt wird, wird die Verbindung über den sicheren Kanal weitergeleitet, und das Anwendungsprotokoll wird dann verwendet, um zu bestimmen, wo von der entfernten Maschine aus eine Verbindung hergestellt werden soll. Derzeit werden die Protokolle SOCKS4 und SOCKS5 unterstützt, und ssh wird als SOCKS-Server fungieren. Nur Root kann privilegierte Ports weiterleiten. Dynamische Portweiterleitungen können auch in der Konfigurationsdatei angegeben werden.
IPv6-Adressen können mit einer alternativen Syntax angegeben werden: [bind_address /] port oder durch Einschließen der Adresse in eckige Klammern.
Nur der Superuser kann privilegierte Ports weiterleiten. Standardmäßig ist der lokale Port gemäß der GatewayPorts-Einstellung gebunden. Eine explizite bind_address kann jedoch verwendet werden, um die Verbindung an eine bestimmte Adresse zu binden. Die Bind_Adresse von "localhost" gibt an, dass der Überwachungsport nur für die lokale Verwendung gebunden werden soll, während eine leere Adresse oder "*" angibt, dass der Port über alle Schnittstellen verfügbar sein soll.
Zusätzlich ssh -L
spezifiziert , dass die bestimmt Port auf dem lokalen (Client) Host ist mit dem angegebenen Host und dem Port auf der entfernten Seite weitergeleitet werden.
SSH -L [bind_address:]port:host:hostport
Gibt an, dass der angegebene Port auf dem lokalen (Client-) Host an den angegebenen Host und Port auf der Remote-Seite weitergeleitet werden soll. Dies funktioniert durch Zuweisen eines Sockets zum Abhören des Ports auf der lokalen Seite, der optional an die angegebene bind_address gebunden ist. Immer wenn eine Verbindung zu diesem Port hergestellt wird, wird die Verbindung über den sicheren Kanal weitergeleitet und eine Verbindung zum Host-Port hostport vom Remotecomputer hergestellt. Portweiterleitungen können auch in der Konfigurationsdatei angegeben werden. IPv6-Adressen können mit einer alternativen Syntax angegeben werden: [bind_address /] port / host / hostport oder durch Einschließen der Adresse in eckige Klammern.
Nur der Superuser kann privilegierte Ports weiterleiten. Standardmäßig ist der lokale Port gemäß der GatewayPorts-Einstellung gebunden. Eine explizite bind_address kann jedoch verwendet werden, um die Verbindung an eine bestimmte Adresse zu binden. Die Bind_Adresse von "localhost" gibt an, dass der Überwachungsport nur für die lokale Verwendung gebunden werden soll, während eine leere Adresse oder "*" angibt, dass der Port über alle Schnittstellen verfügbar sein soll.