Connessione al server Ubuntu tramite SSH esternamente


25

Di recente ho installato Ubuntu Server 12.04 (Precise Pangolin) e intendo usarlo principalmente come file server. Sono completamente nuovo su Linux, quindi questa è una curva di apprendimento piuttosto grande. Ieri sono stato in grado di configurare PuTTY sul mio computer Windows 7 utilizzando una coppia di chiavi SSH in modo da poter amministrare Ubuntu Server dal mio desktop. Funziona bene a condizione che entrambe le macchine siano sulla stessa rete.

Nel caso del mio laptop ( MacBook Air ) potrebbe non essere sempre sulla stessa rete. È possibile connettersi al server Ubuntu dal mio laptop tramite SSH quando si trova su una rete diversa?

Ho installato il demone avahi in modo che il nome host per il server venga trasmesso sulla LAN e configurato il router in modo che assegni sempre lo stesso indirizzo IP al server. A parte questo, l'unica cosa che ho installato sul server è OpenSSH dove ho disabilitato l'autenticazione della password in modo che tu possa connetterti solo usando una coppia di chiavi.

Pensavo di poter fare qualcosa del genere dal terminale sul mio laptop:

ssh my.external.ip.address user@hostname.local

Quando provo quel comando ottengo l'errore:

ssh: connettersi per ospitare my.external.ip.address porta 22: operazione scaduta

Ho anche provato

ssh my.external.ip.address user@servers.local.ip.address

e ricevo lo stesso messaggio di errore di prima. Quindi questo dovrebbe darti un'idea di ciò che sto cercando di fare, ma è possibile, e se lo è, come posso farlo?

Supponendo che sia possibile impostare una connessione esterna tramite ssh dal mio laptop, esiste la possibilità che il mio ISP cambi il mio indirizzo IP esterno, interrompendo la connessione esterna. Vorrei essere in grado di connettermi in modo affidabile, ovvero se il mio ISP modifica l'indirizzo IP esterno sarei comunque in grado di connettermi in remoto al server senza dover sapere qual è il nuovo indirizzo IP esterno.

Risposte:


23

Innanzitutto, il comando corretto è: ssh user@my.external.ip.address

E il router dovrebbe essere configurato per inoltrare la porta SSH 22 all'indirizzo IP locale del server.

Per un ulteriore debug:

1) Verificare che la porta 22 (SSH) sia aperta sul server e sul router (port forwarding).

2) Verifica che il server SSH sia in esecuzione sul tuo server

3) Utilizzare ping, ssh -vdurante la connessione e guardare /var/log/auth.logper eseguire il debug di ulteriori problemi di connessione.

1) Sul router: seguire le istruzioni specifiche del router

Sul tuo server: sudo ufw status(a meno che tu non usi un'altra utility di configurazione del firewall) o sudo iptables -L(metodo generale, ma output complesso)

Per aprire la porta 22: sudo ufw allow 22

cf https://help.ubuntu.com/12.04/serverguide/firewall.html

2) Verifica che sia installato: dpkg -l openssh-server

Verificare che sia in esecuzione: service ssh statusops aux | grep sshd

3) Sul client di connessione:

  • ping my.external.ip.address
  • ssh -v user@my.external.ip.address

Sul server:

  • sudo less /var/log/auth.log

È possibile controllare anche i registri del router, se necessario.

Ecco uno scanner di porte online: https://www.grc.com/x/ne.dll?bh0bkyd2

Penso che tu possa usare strumenti come nmap o altri, ma non li conosco ancora.

Trattare con un indirizzo IP esterno che cambia:

1) Ottieni un dynDNS o un account simile: http://dyn.com/dns/

Elenchi di provider DNS dinamici:

2) Un'altra soluzione è quella di impostare un lavoro crontab, che ti spedisce regolarmente il tuo indirizzo IP esterno o inserisca un servizio di archiviazione online come dropbox.

Ecco una sceneggiatura che un mio amico 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>.*$|\1| 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

Port forwarding del router:

1) In primo luogo, capire l'indirizzo IP locale del router eseguendo:

ip route | grep default

Di solito è qualcosa come 192.168.xx

Modi alternativi e altre soluzioni del sistema operativo:

2) Utilizzando qualsiasi computer collegato localmente al router, accedere all'IP trovato in precedenza, ad esempio tramite http://192.168.1.1 . Questo dovrebbe far apparire l'interfaccia di configurazione del router.

3) I passaggi successivi variano in base al router. Ecco come viene fatto su un router con OpenWRT per esempio:

https://newspaint.wordpress.com/2012/08/26/how-to-add-a-port-forward-using-the-web-interface-on-openwrt-10-03-1/


Grazie per questo, esaminerò i suggerimenti ora.
Aesir,

Ok tutto quello che dovevo fare era inoltrare la porta 22 sul mio router al server e funziona, grazie mille. Esiste un modo per risolvere la seconda parte della mia domanda sul fatto che il mio indirizzo IP esterno potrebbe cambiare? - Ho appena visto la tua modifica, ora leggerà.
Aesir,

Potresti spiegare come posso inoltrare la porta 22 sul mio router al server? Cosa significa? Grazie!
xxx222,

Dipende dal router che hai, ma di solito dovrebbe esserci una pagina di port forwarding o le impostazioni del firewall da qualche parte. Ecco come farlo su un router con OpenWRT: newspaint.wordpress.com/2012/08/26/… La maggior parte dei router può essere configurata andando su 192.168.1.1 o un indirizzo 192.168.xx simile dal tuo browser se sei su la stessa rete del router.
KIAaze,

3

Di default in Ubuntu (Desktop) SSH non è installato.

Puoi installarlo con il seguente comando nel Terminale:

sudo apt-get install openssh-server

Dovrebbe installare e avviare subito il servizio.


2
+1. Questo ha funzionato alla grande quando l'ho provato. Sono stato in grado di inviare ssh alla macchina Ubuntu subito dopo aver eseguito quel comando (per Ubuntu 14.04 (Trusty Tahr), edizione desktop a 64 bit).
Peter Mortensen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.