web-dev-qa-db-fra.com

SOCKS proxy au serveur SSH derrière le proxy HTTP

J'ai configuré un proxy SOCKS sur le port 9090 vers l'ordinateur B ailleurs:

ssh -D localhost:9090 user@B

et l'a configuré dans mon navigateur Google Chrome local. Cependant, l'ordinateur B se trouvant derrière un proxy HTTP, les requêtes HTTP provenant localement de cet ordinateur sont transmises à l'ordinateur B via le proxy SOCKS mais ne peuvent pas être adressées (le terminal exécutant ssh -D localhost: 9090 user @ B affiche "échec de l'ouverture: échec de la connexion: non route vers l’hôte "lorsqu’une telle demande est faite).

J'ai essayé:

  1. la mise en place du proxy HTTP distant BOTH (derrière lequel se trouve l'ordinateur B) et du proxy SOCKS dans Google Chrome,
  2. en cours d'exécution ssh -D localhost: 9090 utilisateur @ B avec la variable d'environnement http_proxy correctement définie,
  3. ajout de http_proxy = _proxy_address_ au fichier .bashrc de l'utilisateur sur l'ordinateur B;

mais aucun n'a fonctionné.

Tout le monde sait comment configurer le proxy SOCKS de manière à prendre en compte le proxy HTTP derrière lequel l'ordinateur B est? Toute méthode n'impliquant pas de changement de SSHD ou de configuration globale sur le serveur serait préférable.

4
Diego de la Hera

Vous feriez beaucoup mieux de "transférer" le serveur proxy du réseau distant via SSH plutôt que d'utiliser le serveur SOCKS intégré (qui attend simplement un réseau adressable par passerelle à l'autre extrémité).

ssh -L 8080:internal_ip_of_proxy:8080 user@ssh_server

Cela expose le serveur proxy localement, ce qui vous permet de définir les paramètres de proxy de votre navigateur sur localhost:8080 et que le tunnel sera acheminé via SSH vers le proxy distant.

Et vous pouvez l'appliquer à n'importe quel service distant. Vous pouvez, par exemple, mettre en tunnel Imgur depuis votre serveur (en fait, un proxy à hôte unique):

ssh -L 8080:imgur.com:80 user@ssh_Host

Et sur un terminal local:

curl --header 'Host: imgur.com' localhost:8080

L'en-tête de l'hôte est requis sinon curl demandera un site localhost non existant. Vous pouvez également contourner ce problème en ajoutant une ligne dans /etc/hosts, en résolvant imgur.com en 127.0.0.1... Mais je m'éloigne du sujet, vous n'avez pas besoin de cela pour vos buts.

4
Oli