Ü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, du musst sich zunächst mit einem Server verbinden, der eine öffentliche IP-Adresse besitzt. Wenn sich dieser Server in demselben privaten Netzwerk befindet wie dein Server ohne öffentliche IPs, kannst du dir anschließend über die private IP mit dem zweiten Server verbinden.

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

Neben deinem Server mit privater IP benötigen du 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.

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

copy-ip

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

In den ersten untenstehenden Schritten wird erklärt wie du dich zuerst mit deinem öffentlichen Server verbinden und anschließend von einem öffentlichen Server mit deinem privaten Server verbinden.

In den letzten beiden Schritten 6 und 7 wird erklärt, wie du die config-Datei bearbeiten können, damit du dich künftig direkt mit deinem privaten Server verbinden kannst, 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, kannst du dir über SSH mit ihnen verbinden. Nutze dazu eine Kommandozeile.

  1. Greifst du mit dem folgenden Befehl remote auf deinen Server mit öffentlicher IP zu

    Über IPv4 oder IPv6:

    • IPv4

      $ ssh root@<203.0.113.1>

      Ersetze den Abschnitt <203.0.113.1> mit der IPv4-Adresse deiner 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. Gib beim Verbinden mit dem Server nicht das Netzwerk /64 als Endung an, sondern die erste Adresse 1.

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

      Ersetze den Abschnitt <2001:db8:1234::1> mit der IPv6-Adresse deiner eigenen Servers.

    Die IP-Adresse kannst du dir in der Hetzner Console kopieren, indem du mit der Maus einmal direkt daraufklickst.

    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 kannst du in der folgenden Datei einsehen:

    ~/.ssh/known_hosts

    Sobald du deinen Server löschen, wird dieser Fingerprint ungültig.

  2. Der nächste Schritt hängt davon ab, ob du beim Erstellen deines Servers einen SSH-Key angegeben hast oder nicht

    • SSH-Key
      Wenn du kein zusätzliches Passwort festgelegt hast, sind keine weiteren Schritte notwendig. Du bist automatisch mit deinem Server verbunden. Hast du eines angegeben, dann gib es jetzt ein.

    • Kein SSH-Key
      Nach dem Erstellen deines Servers haben du dein root-Passwort per E-Mail von uns erhalten. Bitte gib dieses nun ein.

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

  3. Passwort ändern

    Wenn dich das erste Mal per root-Passwort auf deinem Server anmelden, werden du dazu aufgefordert dein Passwort zu ändern.

    Gib dazu wie aufgefordert dein altes Passwort an und bestimmen du anschließend ein neues Passwort.

  4. SSH-Key erstellen

    Bevor dich über die private IP mit deinem zweiten Server verbinden, kannst du einen SSH-Key hinterlegen.

    Dieser Schritt kann optional übersprungen werden. In diesem Fall musst du künftig immer ihr Passwort angeben.

    • Key erstellen

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

      ssh-keygen -t ed25519


      Führe 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>

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

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

    Nun da der SSH-Key hinterlegt ist, kannst du dir künftig mit deinem Server ohne öffentliche IPs verbinden, ohne ein Passwort angeben zu müssen.

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

  5. Greifst du mit dem folgenden Befehl von einem Server mit öffentlicher IP auf deinen Server mit privater IP zu

    $ ssh root@<10.2.0.3>

    Ersetze den Abschnitt <10.2.0.3> mit der privaten IP deiner eigenen Servers ohne öffentliche IPs.

    Die IP-Adresse kannst du dir in der Hetzner Console kopieren, indem du mit der Maus einmal direkt daraufklickst.

    copy-ip

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

    Wenn du wie im Schritt 4 erklärt einen SSH-Key hinterlegt haben, sind du direkt mit deinem Server verbunden.
    Wenn kein SSH-Key hinterlegt wurde, gib nun dein Passwort an. Dieses solltest du nach dem Erstellen des Servers per E-Mail erhalten haben.

  6. Bearbeite die config-Datei auf deinem lokalen Gerät

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

    Nutze zunächst die Tastenkombination CTRL+D, um die Verbindung zu deinem Server mit privater IP zu beenden. du sollten nun wieder auf deinem Server mit öffentlicher IP sein.
    Nutze erneut die Tastenkombination CTRL+D. Damit sollte nun die Verbindung zu deinem Server mit öffentlicher IP beendet werden und du sollten sich wieder auf deinem 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, kannst du 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.

    dein 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 du ssh unique-name-1 eingeben, verbindet sich dein lokales Gerät direkt mit 203.0.113.1.
    Wenn du ssh unique-name-2 eingeben, verbindet sich dein lokales Gerät erst mit 203.0.113.1 und anschließend von dort mit 10.2.0.3.

    Bearbeite auf deinem lokalen Gerät die config-Datei:

    nano ~/.ssh/config

    Fügen du 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

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

    Sobald du fertig sind, kannst du die Datei mit CTRL + X schließen, mit Y speichern und mit ENTER bestätigen.

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

    Durch den zweiten Eintrag kannst du in deiner Kommandozeile künftig ssh server-private-ip ausführen, um sich direkt mit deinem 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 dich mit nur einem Befehl mit deinem Server ohne öffentliche IPs

    ssh server-private-ip

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


Nächste Schritte: