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?
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.
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
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.
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.
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. .____.]
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