Configure a conexão SSH direta de A a C sem IPs públicos usando um servidor SSH público

2

Tenho disponíveis estes servidores / clientes SSH:

A - without public IP

B - public IP

C - without public IP

Eu sei, posso estabelecer uma conexão SSH de A a C da seguinte forma:

1) Hook C para B. Fazendo a partir de C:

ssh -R 10100:localhost:22 B_IP

2) Defina o encaminhamento de porta de A para C usando o gancho B para poder usar o agente ssh na máquina A:

ssh -L 5000:localhost:10100 B_IP

3) Agora eu posso usar minhas chaves ssh para acessar "diretamente" C de A:

ssh -p 5000 localhost

... meu ponto é:

Posso de alguma forma estabelecer uma nova conexão "pura" de A para C para que, depois que a máquina B cair, eu possa continuar meu trabalho?

Acho que deve ser possível, desde que esses dois computadores percebam, eles já compartilham uma conexão ou estou errado?

Obrigado pelo seu tempo & ideias:)

    
por jirislav 13.10.2015 / 00:53

2 respostas

2
  • O método usual é configurar o "encaminhamento de porta NAT" no roteador de A ou C. (Como isso é feito depende do roteador, mas há instruções em todos os lugares.) Depois de fazer isso, você pode se conectar ao endereço público do roteador C + à porta "encaminhada" e a conexão passará para C.

    (Nota: O encaminhamento de porta NAT e o encaminhamento de porta SSH são semelhantes, mas distintos, como um martelo e uma chave de fenda. Não os confunda.)

  • Se você não tiver acesso administrativo a nenhum roteador, tente usar o UPnP ou o NAT-PMP para configurar uma regra de encaminhamento de porta, como fazem muitos jogos e programas P2P. Para isso, use os comandos upnpc ou natpmpc .

  • Se nenhum dos métodos acima funcionar, você precisará de alguma forma de NAT-punching . (Veja também o TCP e Artigos de perfuração de furos ICMP .

    Infelizmente, embora seja amplamente utilizado em vários programas específicos , não parece haver muitas ferramentas genéricas para TCP, embora chownat pode funcionar.

por 13.10.2015 / 07:12
1

Isso é provavelmente impossível, a menos que você possa fazer algum tipo de encaminhamento de porta nos roteadores - mas neste caso você não precisa do computador C.

A coisa é que no seu exemplo você não está indo diretamente de A - > C, os pacotes ainda estão atravessando B.

Se você tiver outro computador com endereços públicos, provavelmente poderá configurar uma configuração de VPN em uma topografia em estrela e usar o roteamento entre as VPNs para criar uma rede virtual em que qualquer um dos hosts públicos caia e as coisas possam continuar a trabalhar. Eu fiz isso com o OpenVPN - existem algumas dicas - uma delas é desativar a filtragem de caminho inverso.

    
por 13.10.2015 / 07:25