ssh através de um roteador sem encaminhamento de porta

8

Eu tenho um servidor Linux, e quero colocá-lo em uma rede doméstica por trás de um roteador. Eu preciso ssh para este servidor em algum momento de fora, mas eu não quero configurar o encaminhamento de porta, porque eu não tenho acesso ao roteador, e eu não sei o ip do roteador também.

O que eu posso fazer é colocar algum programa no servidor linux, então quando ele estiver conectado à Internet, ele enviará dados constantemente para o meu outro servidor online, assim eu sei o endereço IP dele. Mas existe uma maneira de ssh para o servidor por trás do roteador de fora? algo como NAT ou socket que mantém a conexão de rede?

Muito obrigado

    
por Jiechao Li 15.05.2013 / 20:30

4 respostas

18

O que você gostaria de fazer é ssh do seu "servidor linux" para algo do lado de fora, como "my_other_server" ou qualquer outra coisa que ambos os servidores possam acessar.

Você usaria o encaminhamento de porta remota ssh.
[user@linux_server]$ ssh -R8022:localhost:22 my_other_server.com
Explicação: Conecte-se ao my_other_server e abra a porta 8022, que será redirecionada para mim na porta 22.

De my_other_server.com, você poderá ssh para localhost na porta 8022 e ter seu tráfego encaminhado para o linux_server usando o linux_server - > túnel my_other_server [user@linux_server]$ ssh -p8022 localhost
Explicação: Conecte-se a mim na porta 8022 que é encaminhada para o linux_server

Se você tiver problemas com o linux_server inicial - > No túnel do my_other_server, você pode criar um script para mantê-lo aberto, ajustar as configurações de manutenção de atividade ou usar o autossh.

    
por 15.05.2013 / 20:51
3

Você pode usar uma espécie de VPN para que isso funcione, mas é necessário que você tenha um servidor que o servidor inacessível possa acessar. Então você pode configurar o OpenVPN no servidor, no seu PC e no servidor com firewall, habilitar client-to-client e pronto. link

    
por 15.05.2013 / 20:34
0

Muito tempo para responder. Espero que isso ajude alguém que esteja procurando o mesmo agora.

Se você quiser acessar um servidor por trás do NAT e não quiser escrever código, provavelmente poderá usar uma ferramenta abaixo e usar o que for adequado às suas necessidades.

Ambas as ferramentas acima assumem que você tem acesso à máquina linux para instalar o cliente Alguns de seus benefícios são:

  • Ambos fornecem acesso ao terminal usando a interface da web
  • Você não precisa de um host ssh reverso intermediário.
  • Muito fácil de instalar
  • Ambos são de código aberto

Eu pessoalmente prefiro mais tmate como você pode hospedar o servidor tmate em seu próprio servidor intermediário (para ssh reverso ) enquanto o teleconsole só pode se conectar a seus próprios servidores para o ssh reverso.

    
por 04.10.2017 / 16:06
0

Esta resposta é baseada na resposta aceita, mas adicionando os detalhes que me permitiram fazê-la. Peço desculpas pela explicação dos pedestres, já que isso não é de todo o meu conhecimento.

Suponha que você tenha dois computadores, A e B . Você deseja ssh de A a B e não pode fazer nenhum encaminhamento de porta nos roteadores conectados a eles.

Como afirma a resposta aceita, você precisa de um servidor S para fazer isso: no computador B , você permitirá ssh conexões provenientes de S ; e do computador A , você acessará esse túnel em S para alcançar B .

Mas como você obtém esse servidor S ? Eu encontrei serveo (link: link ). É de uso muito simples. Você não precisa instalar nada nem se registrar e é gratuito. Segundo o site, os passos a seguir são:

  1. Pense em um alias para o computador B . Por exemplo, computer_B_alias .

  2. No computador B , execute ssh -R computer_B_alias:22:localhost:22 serveo.net .

  3. Agora, você pode acessar o computador B do computador A executando o seguinte no computador A : ssh -J serveo.net user@computer_B_alias , em que você deve substituir user pelo nome do usuário no computador B .

P.S .: Claro, você faz do ponto 2 uma tarefa automática ao iniciar seu computador B .

P.S .: Antes de tentar isso, verifique se ssh está instalado nos dois computadores. Para o Ubuntu, sudo apt-get install ssh faria o trabalho.

    
por 30.10.2018 / 13:29