Externe Verbindung zum Ubuntu-Server über SSH

25

Ich habe vor kurzem Ubuntu Server 12.04 (Precise Pangolin) installiert und beabsichtige, ihn hauptsächlich als Dateiserver zu verwenden. Ich bin völlig neu in Linux, das ist also eine ziemlich große Lernkurve. Gestern konnte ich PuTTY auf meinem Windows 7-Computer mit einem SSH-Schlüsselpaar so konfigurieren , dass ich Ubuntu Server von meinem Desktop aus verwalten kann. Dies funktioniert einwandfrei, vorausgesetzt, beide Computer befinden sich im selben Netzwerk.

Bei meinem Laptop ( MacBook Air ) befindet er sich möglicherweise nicht immer im selben Netzwerk. Kann ich von meinem Laptop aus über SSH eine Verbindung zum Ubuntu-Server herstellen, wenn er sich in einem anderen Netzwerk befindet?

Ich habe den Avahi-Daemon so installiert, dass der Hostname für den Server im LAN übertragen wird, und den Router so konfiguriert, dass er dem Server immer die gleiche IP-Adresse zuweist. Abgesehen davon ist das einzige, was ich auf dem Server installiert habe, OpenSSH, bei dem ich die Kennwortauthentifizierung deaktiviert habe, damit Sie eine Verbindung nur über ein Schlüsselpaar herstellen können.

Ich dachte, ich könnte so etwas vom Terminal auf meinem Laptop aus machen:

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

Wenn ich diesen Befehl versuche, erhalte ich den Fehler:

ssh: Verbindung zum Host my.external.ip.address Port 22: Zeitüberschreitung des Vorgangs

Ich habe es auch versucht

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

und ich bekomme die selbe Fehlermeldung wie vorher. Das sollte Ihnen eine Vorstellung davon geben, was ich versuche, aber ist das möglich und wenn ja, wie mache ich das?

Angenommen, ich kann eine externe Verbindung über ssh von meinem Laptop aus einrichten, besteht die Möglichkeit, dass mein ISP meine externe IP-Adresse ändert, wodurch die externe Verbindung unterbrochen wird. Ich möchte eine robuste Verbindung herstellen können, dh wenn mein ISP die externe IP-Adresse ändert, kann ich dennoch eine Remoteverbindung zum Server herstellen, ohne die neue externe IP-Adresse kennen zu müssen.

Asen
quelle

Antworten:

23

Zuallererst ist der richtige Befehl: ssh [email protected]

Der Router sollte so konfiguriert sein, dass er den SSH-Port 22 an die lokale IP-Adresse Ihres Servers weiterleitet.

Zum weiteren Debuggen:

1) Überprüfen Sie, ob Port 22 (SSH) auf Ihrem Server und auf dem Router offen ist (Portweiterleitung).

2) Überprüfen Sie, ob der SSH-Server auf Ihrem Server ausgeführt wird

3) Verwenden Sie ping, ssh -vwährend Sie eine Verbindung herstellen, und überprüfen Sie /var/log/auth.log, ob weitere Verbindungsprobleme aufgetreten sind.

1) Auf Ihrem Router: Befolgen Sie die Anweisungen des Routers

Auf Ihrem Server: sudo ufw status(sofern Sie kein anderes Firewall-Konfigurationsdienstprogramm verwenden) oder sudo iptables -L(allgemeine Methode, aber komplexe Ausgabe)

So öffnen Sie Port 22: sudo ufw allow 22

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

2) Überprüfen Sie, ob es installiert ist: dpkg -l openssh-server

Überprüfen Sie, ob es ausgeführt wird: service ssh statusoderps aux | grep sshd

3) Auf dem verbindenden Client:

Auf dem Server:

  • sudo less /var/log/auth.log

Sie können bei Bedarf auch die Router-Protokolle überprüfen.

Hier ist ein Online-Port-Scanner: https://www.grc.com/x/ne.dll?bh0bkyd2

Ich denke, Sie können auch Tools wie nmap oder andere verwenden, aber ich bin noch nicht so vertraut mit ihnen.

Umgang mit einer sich ändernden externen IP-Adresse:

1) Besorgen Sie sich ein DynDNS oder ähnliches Konto: http://dyn.com/dns/

Listen dynamischer DNS-Anbieter:

2) Eine andere Lösung besteht darin, einen Crontab-Job einzurichten, der Ihnen regelmäßig Ihre externe IP-Adresse zusendet oder in einen Online-Speicherdienst wie Dropbox einfügt.

Hier ist ein Skript, das ein Freund von mir benutzt:

    #!/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

Router-Portweiterleitung:

1) Ermitteln Sie zunächst die lokale IP-Adresse Ihres Routers, indem Sie Folgendes ausführen:

ip route | grep default

Es ist normalerweise so etwas wie 192.168.xx

Alternative Wege und andere Betriebssystemlösungen:

2) Greifen Sie mit einem beliebigen Computer, der lokal an den Router angeschlossen ist, auf die zuvor gefundene IP- Adresse zu, z. B. über http://192.168.1.1 . Daraufhin sollte die Router-Konfigurationsoberfläche angezeigt werden.

3) Die nächsten Schritte variieren je nach Router. So wird es zum Beispiel auf einem Router mit OpenWRT gemacht:

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

KIAaze
quelle
Vielen Dank dafür, ich werde jetzt die Vorschläge durchgehen.
Aesir
Ok, alles was ich tun musste, war Port 22 auf meinem Router an den Server weiterzuleiten und es funktioniert, vielen Dank. Gibt es eine Möglichkeit, den zweiten Teil meiner Frage zu lösen, dass sich meine externe IP-Adresse ändern könnte? - Hab gerade deine Bearbeitung gesehen, werde jetzt nachlesen.
Aesir
Können Sie erklären, wie ich den Port 22 meines Routers an den Server weiterleiten kann? Was bedeutet das? Vielen Dank!
xxx222
Es hängt davon ab, welchen Router Sie haben, aber normalerweise sollte irgendwo eine Seite mit Portweiterleitungen oder Firewall-Einstellungen vorhanden sein. So wird es auf einem Router mit OpenWRT gemacht: newspaint.wordpress.com/2012/08/26/… Die meisten Router können konfiguriert werden, indem Sie in Ihrem Browser zu 192.168.1.1 oder einer ähnlichen 192.168.xx-Adresse wechseln, wenn Sie angemeldet sind das gleiche Netzwerk wie der Router.
KIAaze
3

Standardmäßig ist in Ubuntu (Desktop) SSH nicht installiert.

Sie können es mit dem folgenden Befehl im Terminal installieren:

sudo apt-get install openssh-server

Der Dienst sollte sofort installiert und gestartet werden.

Kenorb
quelle
2
+1. Das hat super geklappt, als ich es ausprobiert habe. Ich konnte direkt nach dem Ausführen dieses Befehls auf den Ubuntu-Computer sshen (für Ubuntu 14.04 (Trusty Tahr), 64-Bit-Desktop-Edition).
Peter Mortensen