Unterschiede zwischen ssh -L bis -D


52

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:


53

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:80wenn Sie http://localhost:4444in 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 7777wenn Sie Ihrem Browser mitteilen, dass er localhost:7777als 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.


6
Ein wichtiges Detail von -L ist, dass Sie einen lokalen Port nur für die lokale Verwendung binden können, z. B. localhost: 80: remotehost: 8080, aber Sie können diesen Port auch für andere binden. Sie können also festlegen, dass ein Computer in Ihrem lokalen Netzwerk über einen Tunnel Zugriff auf einen Remotecomputer bietet, ohne dass einer der lokalen Computer davon Kenntnis hat.
Dividebyzero

@dividebyzero Ich habe Probleme, mir vorzustellen, was Sie beschreiben
Michael Dorst

@MichaelDorst Ich meine diesen Satz aus der Manpage: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.
dividebyzero

ssh -L 4444:google.com:80funktioniert bei mir nicht, es ist ein weiterer Parameter zum Anmelden erforderlich, z. B. user@example.com
Saman Mohamadi

6

Gibt in SSH -Deine 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 -Lspezifiziert , 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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.