Conexão SSH entre dois computadores de trás-nat através do terceiro computador de ip público

7

Eu tenho um computador em casa ( home-server ) que roda irssi, rtorrent etc. Meu ISP está bloqueando todo o tráfego de fora (estúpido, eu sei, mas é o único ISP que eu posso ter ).

Eu quero poder logar no shell do home-server de qualquer computador remoto (atrás do NAT).

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

Aqui está diagrama descrevendo a situação:

É possível obter acesso ao shell em meu home-server ? Eu ouvi algo sobre o tunelamento ssh, mas não encontrei nenhum tutorial que correspondesse a este caso.

    
por seler 27.07.2011 / 00:30

3 respostas

14

no servidor inicial (encapsulamento de terceiros para casa):
ssh -R 20000:127.0.0.1:22 thirdparty.org

Isso conecta sua caixa inicial ao shell de terceiros e, em seguida, inicia o encaminhamento de quaisquer conexões para a porta 20000 no shell de terceiros para a porta 22 em sua caixa inicial (a porta SSH).

No computador remoto (encapsulamento de 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, inicia a entrada na porta 20000 na caixa remota para a porta 20000 no shell de terceiros.

e, em seguida, no computador remoto (conectar-se sobre túneis):% ssh 127.0.0.1:20000 e 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 o terceiro, o comando nº 2 encaminha efetivamente essa tentativa de conexão para 127.0.0.1:20000 no shell de terceiros. Então, o primeiro comando envia a conexão novamente para a porta 22 em sua caixa inicial, ponto no qual o servidor ssh pega a conexão.

    
por 27.07.2011 / 00:37
6

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

R - > Um

ssh -R 20000:127.0.0.1:22 user@RemoteHost
  1. Acima do comando executado na máquina A .

  2. Crie um túnel a partir de R ( porta 20000 de R ) para A ( porta 22 de A ) (tunelamento reverso)

B - > R

ssh -L 8000:127.0.0.1:20000 user@RemoteHost
  1. Acima do comando executado em B .

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

B - > Um

ssh 127.0.0.1 -p 8000

A conexão real está indo embora R , ou seja, B (porta 8000) - > R ( porta 20000) - > A (porta 22)

O mesmo usando o PuTTY e o Windows:

R - > Um

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 - > Um

putty.exe -ssh 127.0.0.1 -P 8000 -l user -pw password
    
por 18.09.2015 / 21:24
1

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

    
por 27.07.2011 / 00:38