Conectando-se ao servidor Ubuntu via SSH externamente

24

Eu instalei recentemente o Ubuntu Server 12.04 (Precise Pangolin) e pretendo usá-lo principalmente como um servidor de arquivos. Eu sou completamente novo no Linux, então esta é uma grande curva de aprendizado. Ontem eu pude configurar o PuTTY na minha máquina Windows 7 usando um par de chaves SSH para que eu possa administrar o Ubuntu Server a partir do meu Área de Trabalho. Isso funciona bem, desde que ambas as máquinas estejam na mesma rede.

No caso do meu laptop ( MacBook Air ), ele pode não estar sempre na mesma rede. É possível conectar-se ao servidor Ubuntu do meu laptop via SSH quando ele estiver em uma rede diferente?

Instalei o daemon avahi para que o nome do host do servidor seja transmitido na LAN e configurei o roteador para que ele sempre atribua o mesmo endereço IP ao servidor. Além disso, a única coisa que instalei no servidor é o OpenSSH onde desabilitei a autenticação de senha para que você só possa se conectar usando um par de chaves.

Eu pensei que seria capaz de fazer algo assim no terminal do meu laptop:

ssh my.external.ip.address [email protected]

Quando eu tento esse comando, recebo o erro:

  

ssh: conecta-se ao host my.external.ip.address porta 22: operação esgotada

Eu também tentei

ssh my.external.ip.address [email protected]

e recebo a mesma mensagem de erro de antes. Então, isso deve lhe dar uma ideia do que estou tentando fazer, mas isso é possível, e se é, como faço isso?

Supondo que eu possa configurar uma conexão externa via ssh do meu laptop, existe a possibilidade de que meu ISP altere meu endereço IP externo, o que quebraria a conexão externa. Gostaria de poder me conectar de forma robusta, ou seja, se meu ISP alterar o endereço IP externo, ainda conseguiria me conectar remotamente ao servidor sem precisar saber qual é o novo endereço IP externo.

    
O
por Aesir 29.08.2012 / 12:16

2 respostas

23

Primeiro de tudo, o comando correto é: ssh [email protected]

E o roteador deve ser configurado para encaminhar a porta SSH 22 para o endereço IP local do seu servidor.

Para mais depuração:

1) Verifique se a porta 22 (SSH) está aberta no seu servidor e no roteador (encaminhamento de porta).

2) Verifique se o servidor SSH está sendo executado em seu servidor

3) Use ping , ssh -v durante a conexão e veja /var/log/auth.log para depurar quaisquer outros problemas de conexão.

1) No seu roteador: siga as instruções específicas do roteador

No seu servidor: sudo ufw status (a menos que você use outro utilitário de configuração de firewall) ou sudo iptables -L (método geral, mas saída complexa)

Para abrir a porta 22: sudo ufw allow 22

cf link

2) Verifique se está instalado: dpkg -l openssh-server

Verifique se está em execução: service ssh status ou ps aux | grep sshd

3) No cliente de conexão:

No servidor:

  • sudo less /var/log/auth.log

Você também pode verificar os registros do roteador, se necessário.

Veja um scanner de portas on-line: link

Acho que você também pode usar ferramentas como nmap ou outras, mas ainda não estou familiarizado com elas.

Lidar com um endereço IP externo em mudança:

1) Obtenha uma conta da dynDNS ou similar: link

Listas de provedores de DNS dinâmicos:

2) Outra solução é configurar um trabalho de crontab, que envia regularmente a você seu endereço de IP externo ou o coloca em um serviço de armazenamento online como dropbox.

Aqui está um script que um amigo meu usa:

    #!/bin/bash
    # Bash script to get the external IP address
    MYWANIP=$(curl http://mire.ipadsl.net | sed -nr -e 's|^.*<span class="ip">([0-9.]+)</span>.*$|| p')
    echo "My IP address is: $MYWANIP"

    IPold=$(cat /home/USER/Dropbox/test.txt)
    echo "Previous IP Address: $IPold"

    if [[ $IPold != $MYWANIP ]] ;
    then
      echo "New IP"
      rm /home/USER/Dropbox/test.txt
      echo $MYWANIP >> /home/USER/Dropbox/test.txt;
      echo $MYWANIP;
    else
      echo "Same IP";
    fi

    # example crontab entry:
    ## m h  dom mon dow   command
    ## */10 * * * * /home/USER/Dropbox/test_ip.sh

Encaminhamento de porta do roteador:

1) Primeiro, descubra o endereço IP local do seu roteador executando:

ip route | grep default

Geralmente é algo como 192.168.x.x.

Formas alternativas e outras soluções de SO:

2) Usando qualquer computador conectado localmente ao roteador, acesse o IP encontrado anteriormente, por exemplo, link . Isso deve trazer a interface de configuração do roteador.

3) Os próximos passos variam dependendo do seu roteador. Aqui está como isso é feito em um roteador com OpenWRT, por exemplo:

link

    
por KIAaze 29.08.2012 / 12:57
2

Por padrão, o Ubuntu (Desktop) SSH não está instalado.

Você pode instalá-lo pelo seguinte comando no Terminal:

sudo apt-get install openssh-server
    
por kenorb 04.07.2013 / 16:36