Über private IP mit dem Server verbinden

Last change on 2022-08-05 • Created on 2022-08-05 • ID: CL-645D1

Bei Servern, die kein öffentliches Netzwerk besitzen, kann eine SSH-Verbindung nur über ein privates Netzwerk hergestellt werden. Das heißt, Sie müssen sich zunächst mit einem Server verbinden, der eine öffentliche IP-Adresse besitzt. Wenn sich dieser Server in demselben privaten Netzwerk befindet wie Ihr Server ohne öffentliche IPs, können Sie sich anschließend über die private IP mit dem zweiten Server verbinden.

Ihr Gerät Server mit öffentlicher IP Server mit privater IP
Öffentliches Netzwerk Öffentliches Netzwerk
Privates Netzwerk Privates Netzwerk

Neben Ihrem Server mit privater IP benötigen Sie somit noch einen zweiten Server. Dieser zweite Server muss eine öffentliche IP besitzen und demselben privaten Netzwerk hinzugefügt worden sein, wie der Server ohne öffentliche IPs.

Sie benötigen also zwei Server, wie in diesem Beispiel:

copy-ip

Beachten Sie, dass beide Server demselben privaten Netzwerk hinzugefügt worden sein müssen.

In den ersten untenstehenden Schritten wird erklärt wie Sie sich erst mit Ihrem öffentlichen Server verbinden und anschließend von Ihrem öffentlichen Server mit Ihren privaten Server verbinden.

In den letzten beiden Schritten 6 und 7 wird erklärt, wie Sie die config-Datei bearbeiten können, damit Sie sich künftig direkt mit Ihrem privaten Server verbinden können, ohne zuvor manuell eine Verbindung zu dem Server mit öffentlicher IP herstellen zu müssen. Stattdessen wird dieser Schritt dann automatisch im Hintergrund ausgeführt.


Nachdem die Server erstellt wurden, können Sie sich über SSH mit ihnen verbinden. Nutzten Sie dazu eine Kommandozeile.

  1. Greifen Sie mit dem folgenden Befehl remote auf Ihren Server mit öffentlicher IP zu

    Über IPv4 oder IPv6:

    • IPv4

      $ ssh root@<203.0.113.1>

      Ersetzen Sie den Abschnitt <203.0.113.1> mit der IPv4-Adresse Ihres eigenen Servers.

    • IPv6
      Den Cloud Servern wird bei IPv6-Adressen immer ein /64 Netzwerk zugewiesen. Standardmäßig weisen wir den Servern die erste Adresse dieses Netzwerks zu. Geben Sie beim Verbinden mit dem Server nicht das Netzwerk /64 als Endung an, sondern die erste Adresse 1.

      $ ssh root@<2001:db8:1234::1>

      Ersetzen Sie den Abschnitt <2001:db8:1234::1> mit der IPv6-Adresse Ihres eigenen Servers.

    Die IP-Adresse können Sie sich in der Cloud Console kopieren, indem Sie mit der Maus einmal direkt draufklicken.

    copy-ip

    Kommandozeilen-Warnung

    Sollte eine Warnung wie diese erscheinen, kann yes angegeben werden.

    The authenticity of host '<203.0.113.1> (<203.0.113.1>)' can't be established.
    ECDSA key fingerprint is SHA256:Jw/3FIJwpp3FIJw/3FIJw/3FppLVppmjWs.
    Are you sure you want to continue connecting (yes/no/[fingerprint])?

    Der in der Warnung angegebene Fingerprint wird lokal gespeichert und in Zukunft automatisch erkannt. Diesen Fingerprint können Sie in der folgenden Datei einsehen:

    ~/.ssh/known_hosts

    Sobald Sie Ihren Server löschen, wird dieser Fingerprint ungültig.

  2. Der nächste Schritt hängt davon ab, ob Sie beim Erstellen Ihres Servers einen SSH-Key angegeben haben oder nicht

    • SSH-Key
      Wenn Sie kein zusätzliches Passwort festgelegt haben, sind keine weiteren Schritte notwendig. Sie sind automatisch mit Ihrem Server verbunden. Sollten Sie eines angegeben haben, dann geben Sie es jetzt ein.

    • Kein SSH-Key
      Nach dem Erstellen Ihres Servers haben Sie Ihr root-Passwort per E-Mail von uns erhalten. Bitte geben Sie dieses nun ein.

    Beachten Sie, dass Passwörter bei der Eingabe in der Kommandozeile nicht sichtbar sind.

  3. Passwort ändern

    Wenn Sie sich das erste Mal per root-Passwort auf Ihrem Server anmelden, werden Sie dazu aufgefordert Ihr Passwort zu ändern.

    Geben Sie dazu wie aufgefordert Ihr altes Passwort an und bestimmen Sie anschließend ein neues Passwort.

  4. SSH-Key erstellen

    Bevor Sie sich über die private IP mit Ihrem zweiten Server verbinden, können Sie einen SSH-Key hinterlegen.

    Dieser Schritt kann optional übersprungen werden. In diesem Fall müssen Sie künftig immer ihr Passwort angeben.

    • Key erstellen

      Führen Sie auf Ihrem Server mit öffentlicher IP folgenden Befehl aus, um einen SSH-Key des Typs ed25519 zu erstellen:

      ssh-keygen -t ed25519


      Führen Sie nun folgenden Befehl aus, um den öffentlichen Key des eben erstellten SSH-Key-Paares auf dem Server ohne öffentliche IPs zu hinterlegen:

      ssh-copy-id -i ~/.ssh/id_ed25519.pub root@<10.2.0.3>

      Beachten Sie, dass <10.2.0.3> mit der privaten IP-Adresse Ihres eigenen Servers ohne öffentliche IPs ersetzt werden muss.

      Sobald der Befehl ausgeführt wurde, werden Sie aufgefordert das Passwort des root-Benutzers anzugeben. Dieses sollten Sie nach dem Erstellen des Servers per E-Mail erhalten haben.

    Nun da der SSH-Key hinterlegt ist, können Sie sich künftig mit Ihrem Server ohne öffentliche IPs verbinden, ohne ein Passwort angeben zu müssen.

    Weitere Informationen bezüglich SSH-Keys: Tutorial "SSH-Key einrichten"

  5. Greifen Sie mit dem folgenden Befehl von Ihrem Server mit öffentlicher IP auf Ihren Server mit privater IP zu

    $ ssh root@<10.2.0.3>

    Ersetzen Sie den Abschnitt <10.2.0.3> mit der privaten IP Ihres eigenen Servers ohne öffentliche IPs.

    Die IP-Adresse können Sie sich in der Cloud Console kopieren, indem Sie mit der Maus einmal direkt draufklicken.

    copy-ip

    Sollte eine Warnung bezüglich host authenticity erscheinen, kann wieder yes angegeben werden.

    Wenn Sie wie im Schritt 4 erklärt einen SSH-Key hinterlegt haben, sind Sie direkt mit Ihrem Server verbunden.
    Wenn kein SSH-Key hinterlegt wurde, geben Sie nun Ihr Passwort an. Dieses sollten Sie nach dem Erstellen des Servers per E-Mail erhalten haben.

  6. Bearbeiten Sie die config-Datei auf Ihrem lokalen Gerät

    Nun da Sie die Schritte selbst einmal durchgeführt haben, können Sie die config-Datei so bearbeiten, dass die Verbindung automatisch als Zwischenschritt über den Server mit öffentlicher IP hergestellt wird. Dadurch können Sie künftig direkt den Server mit privater IP angeben, ohne dass Sie sich zuvor manuell mit ihrem Server mit öffentlicher IP verbinden müssen.

    Nutzen Sie zunächst die Tastenkombination CTRL+D, um die Verbindung zu Ihrem Sever mit privater IP zu beenden. Sie sollten nun wieder auf Ihrem Server mit öffentlicher IP sein.
    Nutzen Sie erneut die Tastenkombination CTRL+D. Damit sollte nun die Verbindung zu Ihrem Server mit öffentlicher IP beendet werden und Sie sollten sich wieder auf Ihrem lokalen Gerät befinden.

    Der config-Datei können Einträge in folgendem Format hinzugefügt werden:

    Host <unique-name>
            HostName <IP-address>
            User <username>
            PreferredAuthentications <publickey/password>

    Wenn ein solcher Eintrag besteht, können Sie anstelle von ssh <username>@<IP-address> schlicht den selbst festgelegten Namen angeben ssh <unique-name>, um eine Verbindung zum Server herzustellen.

    Der Eintrag kann zusätzlich noch um die Option "ProxyJump" erweitert werden. An dieser Stelle kann der <unique-name> eines anderen Eintrags angegeben werden. Die Verbindung wird dann nicht vom lokalen Gerät hergestellt, sondern von dem nach "ProxyJump" angegebenen Server. Da sich das lokale Gerät dafür zunächst mit dem unter ProxyJump angegebenen "Zwischenserver" verbinden muss, muss dieser ebenfalls einen Eintrag besitzen.

    Ihr lokales Gerät unique-name-1 unique-name-2
    HostName 203.0.113.1 10.2.0.3
    ProxyJump N/A unique-name-1

    Wenn Sie ssh unique-name-1 eingeben, verbindet sich Ihr lokales Gerät direkt mit 203.0.113.1.
    Wenn Sie ssh unique-name-2 eingeben, verbindet sich Ihr lokales Gerät erst mit 203.0.113.1 und anschließend von dort mit 10.2.0.3.

    Bearbeiten Sie auf Ihrem lokalen Gerät die config-Datei:

    nano ~/.ssh/config

    Fügen Sie der untersten Zeile folgenden Text hinzu:

    Host server-public-ip
            HostName 203.0.113.1
            User root
            PreferredAuthentications publickey
    
    Host server-private-ip
            HostName 10.2.0.3
            User root
            PreferredAuthentications publickey
            ProxyJump server-public-ip

    Ersetzen Sie die IPs 203.0.113.1 und 10.2.0.3 mit den IP-Adressen Ihrer eigenen Server. Wenn kein SSH-Key hinterlegt ist, geben Sie für "PreferredAuthentications" anstelle von "publickey" bitte "password" an.

    Sobald Sie fertig sind, können Sie die Datei mit CTRL + X schließen, mit Y speichern und mit ENTER bestätigen.

    Durch den ersten Eintrag können Sie in Ihrer Kommandozeile künftig ssh server-public-ip ausführen, anstelle von ssh root@203.0.113.1, um sich mit Ihrem Server mit öffentlicher IP zu verbinden.

    Durch den zweiten Eintrag können Sie in Ihrer Kommandozeile künftig ssh server-private-ip ausführen, um sich direkt mit Ihrem Server ohne öffentliche IPs zu verbinden. Da der Server mit öffentlicher IP unter "ProxyJump" angegeben wurde, wird die Verbindung im Hintergrund automatisch über den zweiten Server aufgebaut.

  7. Verbinden Sie sich mit nur einem Befehl mit Ihrem Server ohne öffentliche IPs

    ssh server-private-ip

    Sie sollten nun direkt mit Ihrem Server ohne öffentliche IPs verbunden sein, ohne zuvor manuell eine Verbindung zu Ihrem Server mit öffentlicher IP herstellen zu müssen. Um die Verbindung wieder zu schließen, nutzen Sie die Tastenkombination CTRL+D.


Nächste Schritte: