Tunelamento SSH reverso multi-hop com dois clientes

0

a). Eu tenho o cliente remoto 1 (raspberry pi) que está por trás de um roteador1 conectado à Internet sem encaminhamento de porta.

b) Eu tenho um servidor SSH com IP conhecido.

c). Eu tenho meu laptop no qual eu quero usar um proxy no Firefox para entrar no roteador1.

Eu tentei fazer assim:

No cliente remoto 1 (raspberry pi) eu faço isso:

ssh -N -R 2222:localhost:22 [email protected]

No meu laptop, eu ssh no servidor

ssh [email protected] 

E faça isso

ssh -l root -p 2222 localhost

Para ssh no cliente remoto 1

3.Eu defino os túneis putty como este

eoFirefoxgostamdisso

E agora, se estou indo para myipaddress. Eu terei o endereço IP do servidor e NÃO o endereço IP do client1 remoto.

Alguma ideia do que está errado?

    
por Adrian 18.04.2017 / 15:48

1 resposta

1

Isso é muito diferente da maneira como faço isso, e não acho que o seu caminho esteja correto.

  1. Primeiro, você precisa configurar um proxy SOCK5 no seu RPI, o que eu não acredito que você tenha feito até agora.

    ssh -fN -D 50000 localhost 
    

    Isso abre a porta 50000 como um proxy SOCK5. A opção -f coloca o processo em segundo plano, o que é útil porque você precisa dar outro comando no RPI. Mas também requer que você tenha um login sem senha configurado no RPI, o que é, em geral, uma coisa tão importante que eu recomendo vivamente que faça isso, independentemente do que estamos discutindo aqui.

  2. Agora você precisa encaminhar alguma porta (digamos 6666) do servidor remoto para o proxy RPI SOCK5:

    ssh -fN me@server -R 6666:localhost:50000
    
  3. Agora você precisa encaminhar uma porta local para o seu laptop para o seu servidor remoto. Se esta fosse uma máquina Linux / Unix, o comando seria:

    ssh -fN me@server -L 8000:localhost:6666
    

    Infelizmente, nunca uso o Windows, por isso não posso sugerir como fazer isso em Putty, mas você parece ter conhecimento suficiente para trabalhar sem minha ajuda.

  4. E, por último, você pode agora configurar seu navegador para usar como um proxy SOCK5 localhost: 8000 .

Por favor note que nada disso diz respeito ao encaminhamento das portas ssh normais, 22 ou 2222, o que parece ser o que você fez. As portas a serem encaminhadas são diferentes das portas ssh. Na verdade, essas portas não estão abertas na sua interface externa, elas são abertas na sua interface local ( lo = 127.0.0.1), e é por isso que você faz Não é necessário alterar a configuração do firewall para que isso funcione. E, por sua vez, é por isso que você pode contornar a configuração de firewall restritiva da sua LAN RPI. Todo o tráfego, mesmo destinado a portas 6666.50000 ou 8000, é roteado através das portas ssh (22, ou talvez 2222 no caso do seu roteador) e, em seguida, é roteado corretamente por ssh para localhost: 6666 / 50000/8000 dentro do pc de destino.

Além disso, há uma desconexão entre a porta do proxy no Firefox (porta 2012 para você) e a porta do servidor sendo encaminhada para o RPI, que é 2222: essas duas portas precisam ser as mesmas: como você vê no meu exemplo , no servidor I sempre use a porta 6666, para que os pacotes relacionados ao proxy fluam do laptop para o servidor: 6666 e, em seguida, do servidor: 6666 para o RPI: 50000. Mas no final, nada disso importa no seu caso, porque você não tem um proxy SOCK5 escutando no RPI, que ao invés disso você deve ter a configuração.

E, BTW, se você planeja deixar a conexão entre o RPI e o servidor sem supervisão por longos períodos de tempo, como horas ou dias, enquanto viaja com o seu laptop, talvez você veja autossh , um script altamente conveniente que verifica se as conexões ssh estão abertas e, se não, mata a conexão ssh anterior e a reinicia automaticamente. Desta forma, é garantido que você sempre encontrará a conexão do servidor com o RPI, mesmo que você esteja viajando por dias a fio.

Funciona, eu tentei através de uma conexão que abrange alguns oceanos; -)

    
por 18.04.2017 / 19:14