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:
É 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: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 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
Comando acima executado na máquinaA.
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
Comando acima executado emB.
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.)