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:
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.
-
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/64als Endung an, sondern die erste Adresse1.$ 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.
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_hostsSobald du deinen Server löschen, wird dieser Fingerprint ungültig.
-
-
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.
-
-
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.
-
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 Typsed25519zu 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"
-
-
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.
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. -
Bearbeite die
config-Datei auf deinem lokalen GerätNun 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 TastenkombinationCTRL+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 angebenssh <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-1eingeben, verbindet sich dein lokales Gerät direkt mit203.0.113.1.
Wenn dussh unique-name-2eingeben, verbindet sich dein lokales Gerät erst mit203.0.113.1und anschließend von dort mit10.2.0.3.Bearbeite auf deinem lokalen Gerät die
config-Datei:nano ~/.ssh/configFü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-ipErsetze die IPs
203.0.113.1und10.2.0.3mit 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+Xschließen, mitYspeichern und mitENTERbestätigen.Durch den ersten Eintrag kannst du in deiner Kommandozeile künftig
ssh server-public-ipausführen, anstelle vonssh 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-ipausfü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. -
Verbinden dich mit nur einem Befehl mit deinem Server ohne öffentliche IPs
ssh server-private-ipdu 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: