Como configurar o túnel SSH entre 2 máquinas atrás de 2 NATs diferentes

5

Eu tenho o Windows PC atrás de um NAT / Firewall em casa e um PC com Windows atrás de um NAT / Firewall no trabalho. Ou seja, nenhum PC tem um endereço IP publicamente visível. Em cada um dos PCs, estou executando uma VM do Ubuntu no VirtualBox.

Meu pessoal de TI no trabalho não me deixa usar o SSH de fora em minha máquina Windows ou no Ubuntu VM em execução nessa máquina, nem abrirá portas para tornar minha máquina acessível, nem me fornecerá um endereço IP publicamente visível para o meu PC Windows ou Ubuntu VM. Mas eu posso sair SSH (como eu faço frequentemente para gerenciar instâncias do Amazon EC2).

Eu gostaria de usar o SSH da minha máquina doméstica (não endereçável) para a minha máquina (não endereçável) para que eu possa executar o software na minha máquina de trabalho a partir de casa. Todas as soluções que encontrei na Internet exigem que uma das VMs seja endereçável pela rede, mas nenhuma resolve o problema quando as duas máquinas não são endereçáveis. Eu estou disposto a desembolsar alguns dólares para alugar um servidor Digital Ocean barato para unir a comunicação entre as VMs Ubuntu.

Existe uma maneira de configurar um conjunto de túneis SSH entre minhas VMs do Ubuntu e o servidor Digital Ocean externo que tornará minha VM do Ubuntu no trabalho endereçável via SSH da minha VM Ubuntu em casa? Estou disposto a fazer isso funcionar configurando um túnel SSH de cada VM do Ubuntu para o servidor Digital Ocean (endereçável) (com o comando SSH originado da VM do Ubuntu).

    
por Jay Godse 31.12.2013 / 23:22

3 respostas

2

Você pode fazer isso facilmente, sem qualquer despesa.

1) Em casa, receba um dns (gratuito) do no-ip.com . Você receberá um nome como

  my_name.no-ip.biz

2) Configure, no seu roteador ou no seu pc; Dessa forma, mesmo que seu ISP altere seu endereço IP, o apelido acima sempre aponta para sua casa. O site no-ip.com tem instruções sobre como fazer isso.

3) no seu roteador, portas de encaminhamento 6521 e uma porta para ssh (2222?) para o seu pc.

4) No trabalho: configure um túnel reverso para o moniker acima, primeiro com o ssh, e apenas verifique se funciona;

5) baixe agora autossh para sua distro, um pequeno invólucro que usa a porta 6521 (por isso!) para verificar se a conexão ainda está ativa e, se não estiver, ela mata a instância em execução de ssh e inicia um novo.

Normalmente, escrevo um executável chamado auto com este conteúdo:

 #!/bin/sh
 /usr/lib/autossh/autossh -M 6521 -f -p 2222 -2 -N -R 8400:localhost:22 [email protected] -i /home/myname/.ssh/id_rsa

Isso configura uma conexão ssh sem senha (consulte o uso da chave criptográfica ** id_rsa) sem terminal (-N), no protocolo 2 (-2), usando a porta 6521 para verificar se a conexão ainda está ativa e redirecionando para minha porta de origem 22 tudo o que é enviado para a porta 8400 no trabalho.

Eu coloquei esta linha

   su myname -c /home/myname/bin/auto

para executar o arquivo executável auto em /etc/rc.local automaticamente na inicialização, como eu em vez de root. Agora posso me conectar ao meu pc de trabalho com o comando:

   ssh -Y myname_at_work@localhost -p 8400 -i /home/myname/.ssh/id_rsa_work

onde agora tenho que usar a chave sem senha para trabalho . Eu descobri que essa conexão é sempre, sempre ativa. Verdadeiramente satisfatório.

    
por 01.01.2014 / 10:39
1

Se eles permitirem, você pode tentar algo como hamachi (eu uso o logmein hamachi pago) para que as duas máquinas existam em uma VPN privada apenas uma com a outra.

Uma vez rodando em ambas as máquinas, você poderia ssh para a outra máquina usando seu IP VPN.

    
por 31.12.2013 / 23:27
0

Se você preferir usar o servidor oceânico digital a que se refere sobre o Hamachi e similares, sugiro que você procure no OpenVpn. Configure o d.o. servidor como um servidor e do pc como clientes e certifique-se de permitir que os clientes cheguem a um ao outro e pronto. Você então alcança seu trabalho pc através de seu endereço IP vpn.

    
por 01.01.2014 / 01:22