Wie kann ich SSH mit einem SOCKS 5-Proxy verwenden?


35

Ich habe einen SOCKS5-Proxy über PuTTY eingerichtet, wobei Port 7777 als dynamischer Port konfiguriert ist. Ich kann Firefox / filezilla / etc verwenden, indem ich sie so konfiguriere, dass sie einen SOCKS-Proxy mit localhostund Port verwenden 7777. Aber ich kann nicht herausfinden, wie man (über Cygwin) über den dynamischen Port zu einem Remote-Server ssht. Ist das möglich?

Ich habe es mit ProxyCommandder folgenden Methode versucht .

  1. Erstellen Sie ~/.ssh/configmit der folgenden Zeile:

    ProxyCommand /usr/bin/nc -X connect -x 127.0.0.1:7777 %h %p
    
  2. Führen Sie ssh -p22 user @ remotehost aus

Die Nachricht, die ich bekomme, ist ssh_exchange_identification: Connection closed by remote host


1
Um ein Programm, das SOCKS nicht unterstützt, durch SOCKS zu führen, können Sie einen sogenannten Proxifer verwenden. Siehe en.wikipedia.org/wiki/Comparison_of_proxifiers . Insbesondere empfehle ich meinen Open-Source-Proxifer tun2socks ( code.google.com/p/badvpn/wiki/tun2socks ).
Ambroz Bizjak

Danke für den Kommentar Ambroz. Ich brauche es, um in Cygwin zu arbeiten, und ich sehe auf der Wikipedia-Seite über Proxifier, dass alle erwähnten entweder nicht in Cygwin implementiert sind oder nicht anwendbar sind. Gibt es eine Möglichkeit, einen Proxifier dazu zu bringen, in Cygwin zu arbeiten?

Sie brauchen es nicht, um Cygwin speziell zu unterstützen. Cygwin-Programme sind letztendlich nur Windows-Programme, aber mit einer POSIX-Schnittstelle, die als Bibliothek implementiert ist. Wenn ein Proxifier unter Windows funktioniert, sollte er in der Lage sein, Cygwin-Programme problemlos zu proxifizieren.
Ambroz Bizjak

Antworten:


31

Sie verwenden 'connect' für HTTPS als Proxy-Version. Dies ist von man nc:

-X proxy_version Fordert nc auf, das angegebene Protokoll zu verwenden, wenn mit dem Proxy-Server gesprochen wird. Unterstützte Protokolle sind '' 4 '' (SOCKS v.4), '' 5 '' (SOCKS v.5) und 'connect' (HTTPS-Proxy). Wenn das Protokoll nicht angegeben ist, wird SOCKS Version 5 verwendet.

Daher sollten Sie für SOCKS 5 Folgendes verwenden:

ProxyCommand /usr/bin/nc -X 5 -x 127.0.0.1:7777 %h %p

Oder einfach:

ProxyCommand /usr/bin/nc -x 127.0.0.1:7777 %h %p

Ich hoffe, es hilft.


Danke Saman, das hat funktioniert! Auch danke für die Erklärung, es hilft.

Das ProxyCommandmuss die erste Zeile Ihres ~/.ssh/config', or else nested inside a specify Hosts sein. Ich weiß nicht genau warum. Es funktioniert nicht, wenn es die letzte Zeile in der~/.ssh/config
Aaron McDaid

@AaronMcDaid: From man ssh_config: "Für jeden Parameter wird der erste erhaltene Wert verwendet." Daher müssen globale Einstellungen vor allen HostAbschnitten stehen. Die letzte Zeile von ~/.ssh/configist Teil des letzten HostAbschnitts.
mpb

Erwähnenswert ist, dass Netcat /bin/ncunter Debian und Ubuntu läuft .
Per Lundberg

11
ssh -o ProxyCommand='nc --proxy-type socks4 --proxy 127.0.0.1:9050 %h %p' user@host

fc19 x86_64, Ncat: Version 6.25


nur neugierig - warum proxy-type socks4?
Verdächtiger

2
Können Sie dem etwas mehr Erklärung hinzufügen, um zu sagen, warum es die Lösung ist?
ChrisF

1
@ChrisF es ist das gleiche wie die akzeptierte Lösung, aber es ist einzeilig! Sie müssen keine Konfigurationsdatei ändern.
j123b567

1
Dies ist das nmap- ncat Programm (kommt über apt install nmapAPT-Systeme wie Ubuntu und Debian), das sich von netcat unterscheidet (sei es netcat-openbsd oder Hobbits netcat-traditional).
Adam Katz

1
@suspectus im Zusammenhang mit @ Adam Katz Kommentar, das proxy-typeist , socks4weil das nmap ncatProgramm nicht sock5 bis vor kurzem nicht unterstützte. Tatsächlich ist dies auch jetzt noch ein Problem (Nov. 2017), da RHEL 7 / Centos 7 auf das nmap-Paket umgestellt hat, aber einen älteren Build verwendet hat, der socks5 nicht unterstützt
Randall

3

tsocks ( http://tsocks.sourceforge.net/ ) ist ein netter Wrapper, der LD_PRELOAD verwendet, damit jedes Programm SOCKS-Proxy transparent verwendet:

tsocks ssh example.com

Funktioniert einfach, denken Sie daran, die SOCKS-Proxy-IP in /etc/tsocks.conf zu konfigurieren


Es ist zu komplex, um eine Konfigurationsdatei zu haben
Jiang YD

1

Dieser folgende Befehl reicht aus, um nur nc zu verwenden:

ssh examplehost.com -o "ProxyCommand=nc --proxy localhost:7000 %h %p"

Die Standardeinstellung ist HTTP-Proxy. Auf Port 7000 wird ein HTTP-Proxy ausgeführt.

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.