Come posso usare SSH con un proxy SOCKS 5?


35

Ho un proxy SOCKS5 impostato tramite PuTTY con la porta 7777 configurata come porta dinamica. Posso usare firefox / filezilla / etc configurandoli per usare un proxy SOCKS con localhoste port 7777. Ma non riesco a capire come ssh (tramite Cygwin) su un server remoto usando la porta dinamica. È possibile?

Ho provato a utilizzare ProxyCommandtramite il seguente metodo.

  1. Crea ~/.ssh/configcon la seguente riga:

    ProxyCommand /usr/bin/nc -X connect -x 127.0.0.1:7777 %h %p
    
  2. Esegui ssh -p22 user @ remotehost

Il messaggio che ricevo è ssh_exchange_identification: Connection closed by remote host


1
Per fare in modo che un programma che non supporta SOCKS passi attraverso SOCKS, puoi usare un cosiddetto proxifer; vedi en.wikipedia.org/wiki/Comparison_of_proxifiers . In particolare, raccomando il mio tun2socks proxifer open source ( code.google.com/p/badvpn/wiki/tun2socks ).
Ambroz Bizjak,

Grazie per il commento Ambroz. Ne ho bisogno per funzionare su Cygwin e dalla pagina di Wikipedia sui proxy è chiaro che tutti quelli menzionati non sono implementati in Cygwin o non applicabili. C'è un modo per far funzionare un proxy in cygwin?

non è necessario per supportare specificamente Cygwin. I programmi Cygwin sono alla fine solo programmi Windows, ma con un'interfaccia POSIX implementata come libreria. Se un proxy funziona su Windows, dovrebbe essere in grado di proiettare correttamente i programmi Cygwin.
Ambroz Bizjak,

Risposte:


31

Stai usando 'connect' per HTTPS come versione proxy, questo è da man nc:

-X proxy_version Richiede che nc debba utilizzare il protocollo specificato quando si parla con il server proxy. I protocolli supportati sono '' 4 '' (SOCKS v.4), '' 5 '' (SOCKS v.5) e 'connect' (proxy HTTPS). Se il protocollo non viene specificato, viene utilizzata SOCKS versione 5.

Quindi dovresti usare quanto segue per usare SOCKS 5:

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

O semplicemente:

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

Spero possa essere d'aiuto.


Grazie Saman, ha funzionato! Inoltre, grazie per la spiegazione, aiuta.

La ProxyCommanddeve essere la prima riga del tuo ~/.ssh/config', or else nested inside a specify sezione Host`. Non so davvero perché. Non funziona se è l'ultima riga del~/.ssh/config
Aaron McDaid

@AaronMcDaid: From man ssh_config: "Per ogni parametro, verrà utilizzato il primo valore ottenuto." Pertanto ... le impostazioni globali devono essere prima di qualsiasi Hostsezione. L'ultima riga di ~/.ssh/configfa parte della Hostsezione finale .
mpb,

Vale la pena ricordare che netcat è presente /bin/ncsu Debian e Ubuntu.
Per Lundberg,

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

fc19 x86_64, Ncat: versione 6.25


solo curioso - perché proxy-type socks4?
suspectus,

2
Puoi aggiungere qualche spiegazione in più a questo per dire perché è la soluzione.
ChrisF,

1
@ChrisF è la stessa della soluzione accettata, ma è una linea! Non è necessario modificare alcun file di configurazione.
j123b567,

1
Questo è il programma nmap ncat (disponibile apt install nmapsu sistemi APT come Ubuntu e Debian), che è diverso da netcat (sia netcat-openbsd o netcat-tradizionale di Hobbit).
Adam Katz,

1
@suspectus relativi a @ Adamo Katz commento, l' proxy-typeè socks4perché il nmap ncatprogramma non supporta sock5 fino più di recente. In effetti, questo è un problema anche adesso (novembre 2017), poiché RHEL 7 / Centos 7 è passato al pacchetto nmap ma ha utilizzato una build precedente che non supporta socks5
Randall,

3

tsocks ( http://tsocks.sourceforge.net/ ) è un simpatico wrapper che utilizza LD_PRELOAD per fare in modo che qualsiasi programma usi il proxy SOCKS in modo trasparente:

tsocks ssh example.com

Funziona e basta, ricorda di configurare l'IP proxy SOCKS in /etc/tsocks.conf


è troppo complesso avere un file di configurazione
Jiang YD

1

Questo comando farà, per usare semplicemente nc:

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

L'impostazione predefinita è proxy HTTP, esiste un proxy HTTP in esecuzione sulla porta 7000.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.