Come tunnel HTTP su SSH tramite SOCKS?

Questo dovrebbe essere un semplice problema da risolvere, ma per qualche motivo non funziona per me.

ssh vps funziona bene (uso chiavi di authentication)

Ho installato il tunnel con il command:

ssh -C2TNv -D 8080 vps

Modifica le impostazioni di networking di Firefox:

  • configuration manuale
    • http proxy: localhost, port: 8080
    • utilizzare questo server proxy per tutti i protocolli
    • SOCKS v5
  • about: config
    • network.proxy.socks_remote_dns: true

Uscita terminal:

 $ ssh -C2TNv -D 8080 vps OpenSSH_6.0p1, OpenSSL 1.0.1a 19 Apr 2012 debug1: Reading configuration data /home/ting/.ssh/config debug1: /home/ting/.ssh/config line 47: Applying options for vps debug1: Reading configuration data /etc/ssh/ssh_config debug1: Connecting to vps.server.com [1.1.1.1] port 22. debug1: Connection established. debug1: identity file /home/ting/.ssh/id_rsa type 1 debug1: identity file /home/ting/.ssh/id_rsa-cert type -1 debug1: Remote protocol version 2.0, remote software version OpenSSH_5.5p1 Debian-6+squeeze1 debug1: match: OpenSSH_5.5p1 Debian-6+squeeze1 pat OpenSSH_5* debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_6.0 debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: server->client aes128-ctr hmac-md5 [email protected] debug1: kex: client->server aes128-ctr hmac-md5 [email protected] debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP debug1: SSH2_MSG_KEX_DH_GEX_INIT sent debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY debug1: Server host key: RSA <removed> debug1: Host 'vps.server.com' is known and matches the RSA host key. debug1: Found key in /home/ting/.ssh/known_hosts:10 debug1: ssh_rsa_verify: signature correct debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS received debug1: Roaming not allowed by server debug1: SSH2_MSG_SERVICE_REQUEST sent debug1: SSH2_MSG_SERVICE_ACCEPT received debug1: Authentications that can continue: publickey,password debug1: Next authentication method: publickey debug1: Offering RSA public key: /home/ting/.ssh/id_rsa debug1: Server accepts key: pkalg ssh-rsa blen 279 debug1: Enabling compression at level 6. debug1: Authentication succeeded (publickey). Authenticated to vps.server.com ([1.1.1.1]:22). debug1: Local connections to LOCALHOST:8080 forwarded to remote address socks:0 debug1: Local forwarding listening on ::1 port 8080. debug1: channel 0: new [port listener] debug1: Local forwarding listening on 127.0.0.1 port 8080. debug1: channel 1: new [port listener] debug1: Requesting [email protected] debug1: Entering interactive session. 

Provo quindi a visitare un sito utilizzando Firefox, output SSH:

 debug1: Connection to port 8080 forwarding to socks port 0 requested. debug1: channel 2: new [dynamic-tcpip] debug1: channel 2: free: dynamic-tcpip, nchannels 3 debug1: Connection to port 8080 forwarding to socks port 0 requested. debug1: channel 2: new [dynamic-tcpip] debug1: channel 2: free: dynamic-tcpip, nchannels 3 

Nonostante il proxy che funziona apparentemente, visitare qualsiasi sito con Firefox torna solo con l'errore "La connessione è stata ripristinata".

Il tuo command SSH con -D è benissimo (cosicché i SOCKS faranno il tunnel è solo il collegamento con i SOCKS tramite HTTP, che devi risolvere)

Ottengo una buona produzione con

 curl --socks5 127.0.0.1:8080 http://blah 

ma ho la stessa output sbagliata che si ottiene se lo faccio

  curl --proxy 127.0.0.1:8080 http://blah 

Quindi, firefox si connette come se fosse un proxy HTTP

Guardando la window firefox

configuration manuale SI

tu hai detto che tu usi questo server proxy per tutti i protocolli. Questa è una mossa totalmente sbagliata! Si desidera immettere un proxy SOCKS e se lo fai allora la casella SOCKS viene annullata / grigia e si può solo immettere un proxy HTTP.

Quindi non segnali.

E fai, inserisci il proxy ip calzini.

e rimuovere where non dice nessun proxy per 127.0.0.1, localhost. se si dice che, che è l'impostazione predefinita.

Per verificare la connessione tramite l'arricciatura, puoi anche utilizzare flag -I -v (per get solo intestazioni HTTP e per get l'output più parlato).

Se queste bandiere hanno selezionato e ricurvo la connessione – vednetworking nella string di output come:

 * Rebuilt URL to: http://www.google.ru/ * Trying ::1... * 87 * 245 * 198 * 44 * Connected to localhost (::1) port 8080 (#0) 

Se non è ansible get la connessione:

 * Rebuilt URL to: http://www.google.ru/ * Trying ::1... * connect to ::1 port 8080 failed: Connection refused 

Nella scheda di un altro terminal con connessione ssh ti piacerà qualcosa di simile:

 debug1: channel 2: new [dynamic-tcpip] debug1: channel 2: free: direct-tcpip: listening port 9999 for 87.245.198.44 port 80, connect from ::1 port 55034 to ::1 port 8080, nchannels 3