Alcança o computador por trás de um NAT ou Proxy

1

Eu tenho um PC em casa conectado através de um modem de satélite twoway. Eu não posso chegar de fora, então depois de uma pesquisa eu encontrei uma solução que é tunelamento ssh reverso. mas tenho algumas perguntas sobre o ssh

Eu tenho um servidor, e gostaria de fazer uma conexão reversa, depois que eu posso usar um encaminhamento de porta para que eu possa conectar ao PC em casa usando a conexão reversa estabelecida. A minha pergunta é se eu criar uma chave pública para estabelecer uma conexão entre o PC do HOME e o servidor, depois é possível fazer login neste servidor de um PC diferente usando a senha em vez da chave pública?

Eu gostaria de escrever um script (cron job) que estabeleça a conexão ssh, então após 30 minutos ele irá verificar se a conexão está quebrada ou não, se está quebrada, do que restabelecerá a conexão, como posso verificar se a conexão ssh ainda está aberta?

    
por OHLÁLÁ 09.03.2012 / 20:06

3 respostas

2

O SSH pode ser configurado para aceitar uma chave pública e uma senha. Eu não desativei a longa e árdua senha que eu configurei em meus servidores SSH apenas no caso de eu perder os arquivos de chaves.

Se você estiver usando o cliente ssh para estabelecer a conexão, ele sairá quando a conexão for finalizada. Você pode armazenar o PID do cliente ssh ao iniciá-lo e verificar se esse mesmo PID está em execução ou chamar ssh de um script sem sair do script e usar while (assumindo bash ) como configure um loop infinito para chamar ssh repetidamente toda vez que ele terminar. init é explicitamente projetado para isso, então você pode ver isso também.

    
por 09.03.2012 / 21:47
2

Eu não tenho certeza se estou respondendo a sua pergunta, mas eu sinto que há um tijolo faltando no que você pretende fazer, então vou adicionar o link perdido e arriscar que essa não foi sua pergunta.

O que você pretende fazer é possível com SSH e não tão difícil de configurar, mas deixe-me começar com um aviso: o tunelamento SSH é ilegal em muitos ambientes de trabalho e pode levá-lo a ser demitido, mesmo que seu propósito seja alcançar seu próprio servidor doméstico com dados / backups.

Para alcançar o servidor digamos em casa ("home") atrás do NAT do seu ISP de um laptop em uma rede pública, digamos, um internet café ("laptop") você faria o seguinte.

Primeiro, você precisa de um servidor SSH em execução que seja acessível na Internet púbica (SSShub).

Conecte "home" permanentemente com "SSHhub" e remote encaminhando uma porta de "SSHhub" para o seu servidor "home". Dê uma olhada no autossh para certificar-se de que a conexão persistirá se você estiver ausente e verifique a página do manual sshd_config para obter o encaminhamento remoto correto. Na sua máquina em casa você começa

autossh -M 0 -Nf SOCKSUSER@SSHHUB -r 8022:localhost:22

Isso encaminhará a porta 8022 no servidor SSHhub público para a porta SSH dos servidores domésticos 22.

Agora você está sentado em um internetcafe com seu laptop e local encaminha uma porta irrestrita para o SSHhub na porta 8022 (usando o exemplo acima). Então, no seu laptop você começa

autossh -M 0 -Nf SOCKSUSER@SSHHUB -l 8122:localhost:8022

Quando isso é configurado, você pode conectar o SSH em sua máquina doméstica a partir do seu laptop, iniciando

ssh SOCKSUSER@localhost -p 8122

A sessão ssh é encaminhada do localhost: 8122 no seu laptop para o localhost: 8022 no SSHhub e de lá para o localhost: 22 no seu servidor doméstico.

Você será solicitado a digitar a senha da conta. Tudo isso lhe dará algumas dores de cabeça com uma chave pública do laptop e do servidor doméstico no arquivo .ssh / authorized_keys do SSHhub. PasswordAuthentication no no arquivo / etc / ssh / sshd_config deve estar ok, já que você está logando dentro do localhost, mas verifique você mesmo. Você pode querer configurá-lo para sim durante a depuração.

Verifique a página de manual do autossh para a opção -M 0 . Isso fará o "ping" do servidor SSH através do túnel criptografado, caso contrário você terá que configurar as portas de monitoramento com a opção -M . -M 0 requer que você defina as variáveis ServerAlive no arquivo .ssh / config assim

ServerAliveInterval 15
ServerAliveCountMax 2
TCPKeepAlive no

Você pode tê-los também inline, eu acho.

Agora posso responder sua pergunta original: é possível fazer login em sua máquina doméstica por trás do NAT sem a chave pública RSA na máquina de laptop / internet cafe? A resposta é "sim" (tanto quanto me lembro) no cenário acima, quando você permite PasswordAuthentication yes no SSHhub, para que você possa se conectar de qualquer máquina (com o cliente SSH disponível) ao SSHhub.

Resposta muito atrasada e provavelmente errada, mas usei algum tempo para descobrir e acho que outros estão se perguntando sobre isso também.

    
por 17.04.2014 / 14:19
-1

Não respondendo a sua pergunta exata, você resolverá o problema com produtos como o neorouter ... É muito fácil de configurar e lida com qualquer configuração de firewall.

    
por 09.03.2012 / 20:54