proxy http su ssh, non calze


30

La domanda è semplice, ma la risposta non è:

ssh -D 8080 user@host

o

ssh -gCNf -D 8080 user@host

o

wathever with -D #

Ho bisogno di un tipo di proxy che posso utilizzare con la variabile http_proxy, in un dispositivo incorporato che non supporta SOCKS.

Cosa dovrei fare?


Non dovrebbe essere ssh -D user@host:8080?
ngen,

l'ho fatto con ssh qualche tempo fa .. vnc attraverso ssh. ma potrei supporre di usare squid (un proxy http) tramite ssh. non riesco a ricordare come ho fatto però al momento. non è -D 'cos (come sai -e meglio di me) -D è SOCKS se ricordo.
barlop

@ngen: No. -Dspecifica una porta su cui aprire il tunnel, non la porta a cui connettersi. (Anche la porta di connessione è specificata come -p port, non :port, per motivi di compatibilità.)
Grawity

Risposte:


33

Metodo 1: utilizzare un proxy HTTP che supporti l'utilizzo di un SOCKS a monte, ad esempio Polipo o Privoxy.

Prima stabilisci un -Dtunnel su SSH come sempre, quindi configura il proxy HTTP per usare il tunnel SSH - esempio configurazione Polipo:

proxyAddress = "::1"
proxyPort = 8118
socksParentProxy = "localhost:8080"
socksProxyType = socks5

Infine, punta l'app su Polipo utilizzando http_proxy=localhost:8118.

Metodo 2: eseguire il programma all'interno del torsockswrapper (o precedente tsocks), che inoltra tutte le connessioni in modo trasparente. Era pensato per l'uso con Tor, ma funziona con qualsiasi server SOCKS, incluso ssh -D.

Metodo 3: imposta un proxy HTTP sul tuo server , quindi usa ssh -Lper accedervi.


Privoxy è la soluzione migliore. Molte grazie.
Seyed Morteza,

18

Ogni -Drisultato in un server SOCKS. Se il tuo client non è in grado di gestire SOCKS dimentica -D.

È necessario eseguire un proxy HTTP sull'host remoto e inoltrare con -L:

ssh -f -N -n -L8080:127.0.0.1:8080 host

2
Per far funzionare un proxy, ho trovato "tinyproxy" super semplice e già configurato ragionevolmente di default. Sull'host remoto Ubuntu / etc, basta "sudo apt-get install tinyproxy", quindi inoltrare alla porta 8888 come sopra: "ssh -L8888: 127.0.0.1: 8888"
Jimbly

7

Ho lo stesso problema che desidera utilizzare il proxy HTTP tramite SSH. Poiché molte applicazioni supportano solo il proxy HTTP e il proxy HTTP è facile da usare nell'ambiente della riga di comando.

Anche se ho cercato diverse pagine ma non riesco a trovare un modo diretto (può essere incatenato con Polipo, Privoxy o tsocks) per farlo ...

Dopo un giorno di lavoro, ho finito una semplice versione Golang del proxy HTTP su SSH. Sentiti libero di giocarci: mallory .

Attualmente supporta solo la chiave RSA (situata in $ HOME / .ssh / id_rsa) e l'autorizzazione della password.

hostè l'indirizzo del server SSH, portè 22se non è cambiato dal vostro amministratore. Il lato server è solo il nostro vecchio amico sshdcon configurazione zero.

mallory -engine=ssh -remote=ssh://host:port

o con nome utente user

mallory -engine=ssh -remote=ssh://user@host:port

o con nome utente usere password1234

mallory -engine=ssh -remote=ssh://user:1234@host:port

Dopo la connessione, un proxy HTTP servirà su localhost: 1315.


4
ssh -L 8080:localhost:12345 user@host

Questo aprirà la porta 8080 sul computer locale e inoltrerà tutti i dati alla porta 12345 su localhost, come visto dal computer remoto.


2
Non dimenticare, devi anche avere un proxy HTTP in esecuzione sull'host remoto. Il port forwarding da solo non aiuta.
Jonathan,

2

Esegui Privoxy sull'host remoto, quindi connettiti tramite SSH a Privoxy utilizzando l' -Lopzione:

-L [indirizzo_indirizzamento:] porta: host: hostport
         Specifica che deve essere la porta specificata sull'host locale (client)
         inoltrato all'host e alla porta indicati sul lato remoto. Questo
         funziona allocando un socket per ascoltare la porta sul lato locale,
         facoltativamente associato al bind_address specificato. Ogni volta che un
         viene effettuata la connessione a questa porta, la connessione viene inoltrata
         il canale sicuro e viene stabilita una connessione alla porta host
         hostport dalla macchina remota.

( fonte manpage )


1

Puoi anche usare il cavatappi (GPL)

Aggiungi quanto segue al tuo .ssh/config

Host=RemoteServerIP or Name
User=UserLoginName
Port=PortNumber
ProxCommand=/usr/bin/corkscrew Proxy.Adress PortNumber %h %p

cavatappi esegue ssh su un proxy http, non sul contrario richiesto.
eMBee,
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.