web-dev-qa-db-fra.com

proxy http sur ssh, pas chaussettes

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

ssh -D 8080 user@Host

ou

ssh -gCNf -D 8080 user@Host

ou

wathever with -D #

J'ai besoin d'une sorte de proxy que je peux utiliser avec la variable http_proxy, dans un périphérique intégré qui ne prend pas en charge SOCKS.

Que devrais-je faire?

28
behrooz

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

Commencez par établir un tunnel -D sur SSH comme toujours, puis configurez 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 sur Polipo à l'aide de http_proxy=localhost:8118.

Méthode 2: Exécutez votre programme dans le wrapper torsocks (ou l'ancien tsocks), qui projette toutes les connexions en transparence. Il était destiné à être utilisé avec Tor, mais fonctionne avec n’importe quel serveur SOCKS, y compris ssh -D.

Méthode 3: Configurez un proxy HTTP sur votre serveur , puis utilisez ssh -L pour y accéder.

31
grawity

Chaque -D aboutit à 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 le transférer avec -L:

ssh -f -N -n -L8080:127.0.0.1:8080 Host
18
ceving

J'ai le même problème que ceux qui veulent utiliser un proxy HTTP via SSH. Étant donné que de nombreuses applications ne prennent en charge que le proxy HTTP, ce dernier est facile à utiliser dans un environnement de ligne de commande.

Bien que recherché plusieurs pages mais je ne trouve pas de moyen direct (peut être chaîné avec Polipo, Privoxy ou tsocks) de le faire ...

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

Actuellement, ne supporte que la clé RSA (située dans $ HOME/.ssh/id_rsa) et l'autorisation du mot de passe.

Host est l'adresse du serveur SSH, port est 22 s'il n'est pas modifié par votre administrateur. Le côté serveur est juste notre vieil ami sshd avec zéro 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 nom d'utilisateur user et mot de passe 1234

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

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

6
justmao945
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 de localhost, comme indiqué sur la machine distante.

4
lesmana

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

 - L [bind_address:] port: Host: hostport 
 Spécifie que le port donné sur l'hôte local (client) doit être 
 Transféré à l'hôte donné et au port situé sur le serveur. côté distant. Ceci 
 Fonctionne en allouant un socket pour écouter le port du côté local, 
 Éventuellement lié à l'adresse bind_address spécifiée. Chaque fois qu'une connexion est établie avec ce port, la connexion est transférée via 
 Le canal sécurisé et une connexion est établie avec le port hôte 
 De la machine distante. .____.]

( source de page de manuel )

2
anonymous

Vous pouvez également utiliser le tire-bouchon (GPL)

Ajoutez ce qui suit à votre .ssh/config

Host=RemoteServerIP or Name
User=UserLoginName
Port=PortNumber
ProxCommand=/usr/bin/corkscrew Proxy.Adress PortNumber %h %p
1
aurelien