Puis-je créer SSH pour tunneler HTTP via le serveur comme s'il s'agissait d'un proxy?

33

Dis que j'ai un serveret client. J'ai besoin de créer une connexion de clientà websitetravers servercomme si c'était un proxy.

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

Jakub Arnold
la source

Réponses:

43

Vous pouvez le faire en utilisant ssh

ssh -L 80:remotehost:80 user@myserver

Vous aurez alors un tunnel entre votre port local 80 et le port de l'hôte distant 80. Cela ne doit pas nécessairement être le même que myserver. Pour rendre cela transparent, vous devez ajouter une entrée au fichier hosts. Si vous ne le faites pas, les vhosts ne fonctionneront pas. Si vous voulez une connexion proxy SOCKS, vous pouvez également utiliser

ssh -D 5000 user@myserver

Cela créera un proxy SOCKS sur le port localhost 5000 qui achemine toutes les demandes via myserver.

Wienczny
la source
2
Si vous avez besoin que ce tunnel soit disponible auprès des clients en dehors de votre boîte, ajoutez l'option -g.
mr-euro
1
La commande telle qu'elle est écrite n'a pas fonctionné pour moi. J'ai dû remplacer l'hôte distant par le bouclage comme ceci: ssh -L 80: 127.0.0.1: 80 user @ myserver
eficker
Serait plus utile si le port distant était différent des ssh -L 81:remotehost:80 user@myserverconversations locales du port local 81 comme s'il était 80 sur le distant.
Rafareino
1
Si vous souhaitez ajouter le proxy SOCKS via votre ~ / .ssh / config, utilisez:Host myserver User user DynamicForward 5000
bonh
15

Oui c'est possible.

Exécutez ssh -D port user@hostet configurez votre client pour utiliser votre box comme proxy SOCKS.

Si vous avez spécifiquement besoin d'un proxy HTTP, vous pouvez utiliser des chaînes proxy et le router via les SOCKS précédents.

mr-euro
la source
5

Putty le fait aussi très bien.

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

Une fois connecté, vous disposez d'un serveur proxy en cours d'exécution sur votre hôte local au port 8080 qui procurera un proxy à toutes les demandes via votre serveur.

Utilisez maintenant un navigateur Web et configurez le proxy en définissant host = localhost et port = 8080 et assurez-vous qu'il s'agit d'un proxy SOCKS que vous sélectionnez. Je le fais tout le temps, donc si vous utilisez Firefox, assurez-vous d'installer le plugin FoxyProxy car il permet d'activer / désactiver le proxy en une seule affaire.

Attention: sachez que par défaut, vos requêtes DNS ne sont pas mandatées. Ainsi, le site Web que vous visitez via le proxy sera toujours enregistré (s'ils enregistrent ces informations). Vous pouvez également configurer Firefox pour proxy les requêtes DNS, il ne le fait tout simplement pas par défaut.

J Sidhu
la source
5

sshuttle fonctionne comme un VPN mais via SSH.

Serveur proxy transparent qui fonctionne comme le VPN d'un pauvre. Avance sur ssh. Ne nécessite pas d'administrateur. Fonctionne avec Linux et MacOS. Prend en charge la tunnellisation DNS.

https://github.com/sshuttle/sshuttle

Kasper Grubbe
la source
2

Pour autoriser l'exécution d'un proxy sur un ordinateur et permettre à d'autres clients de se connecter, vous aurez besoin de l'option -g. Ainsi, par exemple, vous exécutez 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 leur demande trop foo, qui à son tour transmettra la demande via ssh à remotehost. Ainsi, sur Internet, il semblerait qu'ils utilisent remotehost.

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

Kyle Brandt
la source