web-dev-qa-db-fra.com

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

Disons que j'ai un server et client. J'ai besoin de créer une connexion de client à un website à server comme 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?

33
Jakub Arnold

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.

43
Wienczny

Oui c'est possible.

Courir ssh -D port user@Host et 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.

15
mr-euro

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

6
Kasper Grubbe

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 toutes les requêtes 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.

5
J Sidhu

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 demandes DNS avec Firefox, modifiez la configuration about: config dans Firefox et définissez network.proxy.socks_remote_dns sur true.

2
Kyle Brandt

Vous pouvez utiliser SSHUTTLE, voici un tutoriel sur la façon de l'utiliser,

https://etherarp.net/sshuttle-a-vpn-for-the-lazy/

voici un tutoriel sur la façon de le configurer pour fonctionner comme un service,

https://medium.com/@mike.reider/using-sshuttle-as-a-service-bec2684a65fe

0
perfecto25