1 votes

ssh -R puis exposer le port local via HTTP ?

Voici mon scénario, j'ai deux machines, A et B. A est derrière un VPN, donc B ne peut pas accéder à A. J'ai un serveur web :

machine_a$ curl localhost:8088 "hello from machine_a"

J'ai exécuté un tunnel SSH à distance comme suit :

machine_a$ ssh -R 8088:machine_a:8088 machine_b -N &

Sur la machine B, je peux vérifier que le tunnel est bien ouvert :

machine_b$ curl localhost:8088 "hello from machine_a"

Comment faire pour que la machine_b écoute le trafic HTTP sur le port 8089 et le dirige vers le port 8088 disponible localement, qui est lui-même un port distant vers le serveur HTTP de la machine_a ?

(De plus, j'ai installé un serveur fictif sur machine_b:8089 et je me suis assuré qu'il était ouvert.

3voto

weisjohn Points 160

Avec socat, cela répond à mes besoins :

machine_b$ socat TCP-LISTEN:8089,su=nobody,fork,reuseaddr TCP-CONNECT:127.0.0.1:8088

Ceci indique à socat d'écouter sur le port TCP 8889 et de le connecter au local 8088. Il fonctionne comme le nobody utilisateur, pour une meilleure sécurité. L'option fork signifie qu'il renégociera le port entrant, afin de ne pas le bloquer.

cURLing depuis ma machine :

my_machine$ curl machine_b:8089 "hello from machine_a"

2voto

Tim Hobbs Points 1467
nc -l 8089 | nc localhost 8088

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