59 votes

Est-ce que je peux créer un tunnel SSH pour faire passer le HTTP à travers le serveur comme s'il s'agissait d'un proxy?

Disons que j'ai un serveur et un client. J'ai besoin de créer une connexion du client vers un site web via le serveur comme s'il s'agissait d'un proxy.

Est-il possible de le faire en utilisant un tunnel SSH, ou dois-je installer un service proxy sur le serveur ?

76voto

Dan Points 123

Vous pouvez le faire en utilisant ssh

ssh -L 80:remotehost:80 user@myserver

Vous aurez un tunnel de votre port local 80 vers le port 80 de remotehost. Cela ne doit pas être identique à myserver. Pour rendre cela transparent, vous devriez ajouter une entrée dans le fichier hosts. Si vous ne le faites pas, les vhosts ne fonctionneront pas. Si vous souhaitez une connexion de type proxy SOCKS, vous pouvez également utiliser

ssh -D 5000 user@myserver

Cela créera un proxy SOCKS sur le port localhost 5000 qui routera toutes les requêtes à travers myserver.

19voto

Marius Butuc Points 3532

Oui, c'est possible.

Exécutez ssh -D port user@host et configurez votre client pour utiliser votre boîte comme proxy SOCKS.

Si vous avez besoin d'un proxy HTTP spécifique, vous pouvez utiliser Proxychains et le router via le précédent SOCKS.

12voto

Kasper Grubbe Points 301

Sshuttle fonctionne comme un VPN mais sur SSH.

Serveur proxy transparent qui fonctionne comme un VPN bon marché. Transfère sur ssh. Ne nécessite pas d'administrateur. Fonctionne avec Linux et MacOS. Prend en charge le tunnel DNS.

https://github.com/sshuttle/sshuttle

6voto

easel Points 2466

Putty le fait aussi très bien.

Sous SSH, allez dans Tunnels. En bas, mettez 8080 dans le port, et pour la destination, laissez-la vide et sélectionnez le bouton radio "Dynamic". C'est tout ce que vous avez à faire, maintenant connectez-vous au serveur en utilisant Putty.

Une fois connecté, vous avez un serveur proxy en cours d'exécution sur votre localhost au port 8080 qui acheminera toutes les demandes via votre serveur.

Maintenant, utilisez un navigateur Web et configurez le proxy en définissant l'hôte=localhost et le port=8080 et assurez-vous de sélectionner un proxy SOCKS. Je fais ça tout le temps, donc si vous utilisez Firefox, assurez-vous d'installer le plugin FoxyProxy car cela permet d'activer/désactiver le proxy en un clic.

Attention: Sachez qu'en principe, vos requêtes DNS ne sont pas acheminées via le proxy. Ainsi, le site Web que vous visitez via le proxy sera toujours enregistré (s'ils enregistrent ce genre de choses). Vous pouvez définir Firefox pour acheminer également les requêtes DNS via le proxy, ce n'est simplement pas activé par défaut.

5voto

Kyle Brandt Points 81077

Pour permettre à un proxy d'être exécuté sur un ordinateur et permettre à d'autres clients de se connecter à vous, vous aurez besoin de l'option -g. Par exemple, vous exécuteriez ceci sur le serveur nommé foo :

ssh -g -ND 9191 root@remotehost

Vous pouvez ensuite définir le proxy dans le navigateur d'un client pour utiliser le serveur foo et le port 9191 pour un proxy SOCKS. Les clients enverront leurs demandes à foo, qui transférera ensuite la demande à distance via ssh vers remotehost. Ainsi, sur Internet, il semblera qu'ils utilisent remotehost.

Si vous souhaitez également transférer les requêtes DNS avec Firefox, modifiez about:config dans Firefox et définissez network.proxy.socks_remote_dns sur true.

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