Conexão SSH entre dois computadores atrás-nat através de um terceiro computador IP público

Conexão SSH entre dois computadores atrás-nat através de um terceiro computador IP público

Eu tenho um computador em casa (servidor doméstico) que executa irssi, rtorrent etc. Meu ISP está bloqueando todo tráfego externo (idiota, eu sei, mas é o único ISP que posso ter).

Quero poder fazer loginservidor domésticoshell de qualquercomputador remoto(atrás do NAT).

Eu tenho uma conta shell em algum lugar (sem acesso root), que pode ser útil para isso.

Aqui está o diagrama que descreve a situação: insira a descrição da imagem aqui

É possível obter acesso ao shell no meuservidor doméstico? Ouvi algo sobre tunelamento ssh, mas não consegui encontrar nenhum tutorial que corresponda a este caso.

Responder1

no servidor doméstico (túnel de terceiros para casa):
ssh -R 20000:127.0.0.1:22 thirdparty.org

Isso conecta sua home box ao shell de terceiros e, em seguida, começa a encaminhar quaisquer conexões da porta 20000 no shell de terceiros para a porta 22 em sua home box (a porta SSH).

No computador remoto (túnel remoto para terceiros):
ssh -L 20000:127.0.0.1:20000 thirdparty.org

Isso conecta sua caixa remota ao shell de terceiros e, em seguida, começa a encaminhar a porta 20000 na caixa remota para a porta 20000 no shell de terceiros.

e depois no computador remoto (conecte-se por túneis):
ssh 127.0.0.1:20000e insira as credenciais do seu servidor doméstico

Isso tentará fazer o ssh para a porta 20000 na caixa remota. Como configuramos um túnel para terceiros, o comando #2 encaminha efetivamente essa tentativa de conexão para 127.0.0.1:20000 no shell de terceiros. Em seguida, o primeiro comando encaminha a conexão novamente para a porta 22 da sua home box, momento em que o servidor ssh capta a conexão.

Responder2

Tentei explicar melhor a solução aceita abaixo. Vamos supor que "máquina A" e "máquina B" estejam atrás do firewall NAT. Embora ambos tenham acesso ssh a uma "máquina R" remota (digamos, um VPS).

R -> A

ssh -R 20000:127.0.0.1:22 user@RemoteHost
  1. Comando acima executado na máquinaA.

  2. Crie um túnel deR(porta 20000 de R) paraA(porta 22 de A) (tunelamento reverso)

B ->R

ssh -L 8000:127.0.0.1:20000 user@RemoteHost
  1. Comando acima executado emB.

  2. Cria um túnel deB(porta 8000 de B) paraR(porta 20000 de R)

B -> A

ssh 127.0.0.1 -p 8000

a conexão real está acontecendoR, aquilo éB(porta 8000)-> R(porta 20000)-> UM(porta 22)


O mesmo usando PuTTY e Windows:

R -> A

putty.exe -R 20000:127.0.0.1:22 -ssh RemoteHost -P port -l user -pw password

B ->R

putty.exe -L 8000:127.0.0.1:20000  -ssh RemoteHost -P port -l user -pw password

B -> A

putty.exe -ssh 127.0.0.1 -P 8000 -l user -pw password

Responder3

Ou você também pode configurar alguns túneis IPv6 com HE.net e conectar-se diretamente... (Muitas soluções VPN também funcionarão.)

Responder4

Gratuito, mas pode ajudar algumas pessoas.. adicionar uma foto para aumentar o acima.

insira a descrição da imagem aqui

informação relacionada