46 votes

proxy http sur ssh, pas socks

La question est simple, mais la réponse ne l'est pas :

ssh -D 8080 user@host

ou

ssh -gCNf -D 8080 user@host

ou

wathever with -D #

J'ai besoin d'un type de proxy que je puisse utiliser avec la variable http_proxy, dans un appareil embarqué qui ne supporte pas SOCKS.

Que dois-je faire ?

44voto

James Mertz Points 390

Méthode 1 : Utilisez un proxy HTTP qui prend en charge l'utilisation d'un SOCKS en amont, par exemple Polipo ou Privoxy.

Il faut d'abord établir un -D par SSH comme d'habitude, puis configurer le proxy HTTP pour utiliser le tunnel SSH - exemple de configuration Polipo :

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

Enfin, pointez l'application vers Polipo en utilisant http_proxy=localhost:8118 .

Méthode 2 : Exécutez votre programme à l'intérieur du torsocks (ou l'ancienne version de tsocks ), qui assure la proxie de toutes les connexions de manière transparente. Il a été conçu pour être utilisé avec Tor, mais fonctionne avec n'importe quel serveur SOCKS, y compris ssh -D .

Méthode 3 : Mise en place d'un proxy HTTP sur votre serveur puis utiliser ssh -L pour y accéder.

22voto

Manish Kumar Points 151

Chaque -D dans un serveur SOCKS. Si votre client ne peut pas gérer SOCKS, oubliez -D .

Vous devez exécuter un proxy HTTP sur l'hôte distant et transmettre avec -L :

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

9voto

justmao945 Points 91

J'ai le même problème, je veux utiliser le proxy HTTP via SSH. En effet, de nombreuses applications ne prennent en charge que le proxy HTTP, et ce dernier est facile à utiliser dans un environnement de ligne de commande.

J'ai eu beau chercher sur plusieurs pages, je n'ai pas trouvé de moyen direct (pouvant être enchaîné avec Polipo, Privoxy, ou tsocks) pour faire cela...

Après quelques jours de travail, j'ai terminé une version Golang simple du proxy HTTP sur SSH. N'hésitez pas à jouer avec : mallory .

Actuellement, seule la clé RSA (située dans $HOME/.ssh/id_rsa) et l'autorisation par mot de passe sont prises en charge.

host est l'adresse du serveur SSH, port es 22 s'il n'est pas modifié par votre administrateur. Le côté serveur n'est que notre vieil ami sshd sans aucune configuration.

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

ou avec le nom d'utilisateur user

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

ou avec le nom d'utilisateur user et le mot de passe 1234

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

Une fois connecté, un proxy HTTP servira sur localhost:1315.

6voto

Lesmana Points 18245
ssh -L 8080:localhost:12345 user@host

Cela ouvrira le port 8080 sur la machine locale et transmettra toutes les données au port 12345 sur localhost, tel qu'il est vu depuis la machine distante.

2voto

Martin Points 21

Exécutez Privoxy sur l'hôte distant, puis connectez-vous via SSH à Privoxy à l'aide de l'option -L option :

\-L \[bind\_address:\]port:host:hostport
         Specifies that the given port on the local (client) host is to be
         forwarded to the given host and port on the remote side.  This
         works by allocating a socket to listen to port on the local side,
         optionally bound to the specified bind\_address.  Whenever a con-
         nection is made to this port, the connection is forwarded over
         the secure channel, and a connection is made to host port
         hostport from the remote machine.

( manpage source )

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X