ssh -R expõe a porta local por HTTP?

1

Aqui está o meu cenário, eu tenho duas máquinas, A e B. A está atrás de uma VPN, então B não pode acessar A. Eu tenho um servidor web:

machine_a$ curl localhost:8088 "hello from machine_a"

Eu executei um túnel SSH remoto da seguinte forma:

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

Na máquina B, posso verificar se o túnel está realmente aberto:

machine_b$ curl localhost:8088 "hello from machine_a"

Como faço para que machine_b ouça o tráfego HTTP em 8089 e rotear / canalizar / o que quer que seja para essa porta localmente disponível 8088, que por sua vez é uma porta remota para o servidor HTTP em machine_a?

(Além disso, configurei um servidor fictício em machine_b: 8089 e certifiquei-me de que ele esteja aberto.

    
por weisjohn 14.01.2013 / 09:54

2 respostas

3

Com socat, isso serve aos meus propósitos:

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

Isso diz ao socat para escutar na porta TCP 8889 e conectá-lo ao 8088 local. Ele é executado como o usuário nobody , para melhor segurança. A opção fork significa que ela renegociará a porta de entrada, para que ela não seja bloqueada.

CURL da minha máquina:

my_machine$ curl machine_b:8089 "hello from machine_a"

    
por 15.01.2013 / 01:13
2
nc -l 8089 | nc localhost 8088
    
por 14.01.2013 / 21:01