como ssh dois computadores atrás de NAT e Firewall, sem terceiro computador

9

Estou tentando ssh na minha caixa Linux em casa. Minha casa é um ambiente no estilo dormitório - NAT e Firewall com laptop pessoal executando o Arch Linux. Meu trabalho é no estilo corporativo Windows 7 - firewall NAT e proxy, sem direitos de administrador.

Consigo conectar os dois portáteis Team Viewer em execução. No entanto, isso não se adequa ao que estou realmente procurando. Estou procurando simplesmente SSH na minha caixa Linux em casa, deixando minha caixa Linux completamente desconectada - basicamente sem cabeça quando não estou lá.

Eu li sobre encapsulamento, no entanto, se entendi o encapsulamento corretamente, preciso de um servidor de terceiros ao qual os dois computadores possam se conectar. Eu não tenho esse servidor e também não desejo pagar por isso.


Qual é a solução simples e segura para fazer o SSH no meu laptop do trabalho? Existe um 'terceiro servidor' gratuito e seguro? Fui para cima e para baixo no Google, mas parece estar ficando cada vez mais confuso.

user1026169
fonte
2
Você tem acesso ao roteador? Você geralmente precisa ajustar as configurações de NAT para apontar seu endereço IP público no servidor SSH interno para fazer algo assim.
jmreicha
Não, não tenho acesso ao roteador e não consigo ajustar as configurações de NAT.
precisa saber é o seguinte
Nesse caso, você provavelmente precisará fazer proxy através de um terceiro servidor para se conectar, se a opção Team Viewer não funcionar.
precisa saber é o seguinte
quem fornece um servidor que eu posso usar apenas como proxy para ssh?
user1026169
Aposto que um VPS baseado em nuvem faria o truque.
jmreicha

Respostas:

16

O pwnat é uma ferramenta de código aberto que supostamente aborda esse problema. Diz :

O pwnat é uma ferramenta que permite que qualquer número de clientes atrás de NATs se comunique com um servidor atrás de um NAT separado, sem encaminhamento de porta e sem configuração de DMZ em nenhum roteador, a fim de se comunicar diretamente entre si. O servidor não precisa saber nada sobre os clientes que estão tentando se conectar.

Não há intermediário, proxy ou terceiro, não é necessário UPnP / STUN / ICE, falsificação e truques de DNS.

Mais importante, o cliente pode se conectar a qualquer host ou porta em qualquer host remoto ou a um host e porta fixos decididos pelo servidor.

O pwnat estabelece este tipo de conexão:

Máquina A (IP: 192.168.1.3) -> NAT A (IP: 122.xxx) -> Internet -> NAT B (IP: 59.xxx) -> Máquina B (192.168.2.10)

O pwnat é distribuído apenas para Linux, mas o artigo PWNAT: Versão Completa do Windows contém a versão do Windows . Veja também, pelo mesmo autor PWNAT: Example .

O método usado pelo pwnat é incrivelmente inteligente, mas não há garantia de que funcione com o seu ambiente.

harrymc
fonte
1
Nota: O pwnat depende do ICMP para funcionar. Especificamente, icmp echo e Time excederam as mensagens. Isso funciona porque o ICMP é sem estado.
shadowbq
Não funciona para mim. Os roteadores NAT não são inteligentes o suficiente para implementar padrões, nem inteligentes o suficiente para entender o autor pwnat. +1 ainda por esperteza.
Quantum
Eu também tentei pwnat sem sucesso. Mas é possível que tenha algo errado na minha configuração. Existe alguém que teve sucesso que pode dar apoio?
robguinness
5

Pessoalmente, acho que o encapsulamento é a melhor opção, mesmo que você ainda não possua um terceiro servidor.

O Amazon EC2 oferece uma opção de preço de nível gratuito, permitindo que novos clientes executem uma micro instância do Linux / Windows por até 750 horas / mês, gratuitamente, por um ano. Eu não usei o serviço, mas presumo que, se você executar o servidor virtual apenas quando necessário, terá um túnel SSH em funcionamento gratuitamente. Você pode até achar o serviço barato o suficiente para garantir o pagamento?

Hak5 produziu uma boa introdução ao tunelamento (com persistência). Você também pode configurar um script acionado por CRON para tentar conexões com o servidor virtual para ter acesso ao laptop alguns minutos após iniciar a instância do EC2 ...

danielcraigie
fonte
Obrigado, encontrei um VPS gratuito com ajuda de alguns fóruns.
user1026169
1
Observe também que 750 horas são 31,25 dias ... Então, basicamente, você recebe uma t2.microinstância gratuitamente, por um ano.
Attie
3

A melhor opção seria configurar o encaminhamento de porta, se você puder, mas se o seu campus fizer o firewall e você não puder fazer o encaminhamento de porta, use esta sugestão.

Sim, existe um terceiro servidor gratuito e você já o está usando, o TeamViewer. Certifique-se de ter o TeamViewer instalado como um serviço (ou qualquer que seja o equivalente no Linux, só uso a versão do Windows). Em seguida, instale o driver da VPN no trabalho e em casa. Você poderá conectar-se usando uma VPN do trabalho e sua máquina doméstica terá um endereço IP 7.xxx. Então, se você quiser entrar em uma sessão de terminal, execute o SSH pelo link da VPN.

A opção de instalação da VPN está em configurações avançadas. insira a descrição da imagem aqui

Isso adicionará uma opção "VPN" para os tipos de conexão que você pode fazer. insira a descrição da imagem aqui

Scott Chamberlain
fonte
1
Muito obrigado pela ajuda detalhada e capturas de tela. Estou usando o TeamViewer portátil e não tenho direitos de administrador. A opção VPN está acinzentada e não posso usá-la.
user1026169
1

Você deve conseguir configurar o encaminhamento de porta (porta 22) no seu roteador / firewall doméstico. E conecte-se ao seu endereço IP público doméstico quando estiver no trabalho. Você pode usar algo como dyndns se não tiver um IP público estático em casa.

NetworkFish
fonte
O encaminhamento de porta não é possível em nenhuma das minhas máquinas devido à rede que as atende. Não tenho configuração de ip, no entanto, não há portas que eu possa usar para conectar as máquinas.
precisa saber é o seguinte
0

Você pode usar um servidor XMPP / Tox público como o "terceiro servidor". Nomeadamente, existem projetos como o Tuntox e o PPPoAT (PPP over Any Transport), que usam esses protocolos de mensagens instantâneas como camadas de transporte.

Eu tentei o PPPoAT, que suporta XMPP e, ao contrário do PWNAT, esse mecanismo realmente funciona para mim.

Para usá-lo, você precisa de duas contas XMPP em qualquer servidor público - uma para o servidor em que deseja fazer login e outra para o seu cliente. Depois de iniciar pppoatno servidor e depois no cliente (ambos com parâmetros de configuração apropriados), você pode iniciar imediatamente a conexão, como por exemplo

ssh [email protected]

É mais lento que a conexão direta, é claro, e a velocidade provavelmente dependerá do servidor XMPP que você escolher, mas para a atividade normal do console é bom o suficiente.

Quanto à segurança, o SSH pode funcionar em uma rede totalmente insegura, já que já implementa sua própria criptografia, portanto, se a conexão baseada em XMPP é segura é realmente irrelevante quando você usa o SSH.

Ruslan
fonte