Verbinden mit einem entfernten HPC-System
Zuletzt aktualisiert am 2025-08-04 | Diese Seite bearbeiten
Übersicht
Fragen
- Wie melde ich mich bei einem entfernten HPC-System an?
Ziele
- Konfigurieren Sie den sicheren Zugriff auf ein entferntes HPC-System.
- Verbinden Sie sich mit einem entfernten HPC-System.
Sichere Verbindungen
Der erste Schritt bei der Nutzung eines Clusters besteht darin, eine Verbindung von unserem Laptop zum Cluster herzustellen. Wenn wir an einem Computer sitzen (oder stehen oder ihn in der Hand oder am Handgelenk halten), erwarten wir eine visuelle Anzeige mit Symbolen, Widgets und vielleicht einigen Fenstern oder Anwendungen: eine grafische Benutzeroberfläche, oder GUI. Da es sich bei Computerclustern um entfernte Ressourcen handelt, mit denen wir uns über langsame oder unregelmäßige Schnittstellen (insbesondere WiFi und VPNs) verbinden, ist es praktischer, eine Befehlszeilenschnittstelle (CLI) zu verwenden, um Befehle im Klartext zu senden. Wenn ein Befehl eine Ausgabe zurückgibt, wird diese ebenfalls im Klartext ausgedruckt. Die Befehle, die wir heute ausführen, werden kein Fenster öffnen, um die Ergebnisse grafisch darzustellen.
Wenn Sie jemals die Windows-Eingabeaufforderung oder das macOS-Terminal geöffnet haben, haben Sie eine CLI gesehen. Wenn Sie bereits an den The Carpentries-Kursen über die UNIX-Shell oder Versionskontrolle teilgenommen haben, haben Sie die CLI auf Ihrem lokalen Rechner ausgiebig genutzt. Der einzige Sprung, den Sie hier machen müssen, ist das Öffnen einer CLI auf einem entfernten Rechner, wobei Sie einige Vorsichtsmaßnahmen treffen müssen, damit andere Leute im Netzwerk die Befehle, die Sie ausführen, oder die Ergebnisse, die der entfernte Rechner zurückschickt, nicht sehen (oder ändern) können. Wir werden das Secure SHell-Protokoll (oder SSH) verwenden, um eine verschlüsselte Netzwerkverbindung zwischen zwei Rechnern zu öffnen, die es Ihnen ermöglicht, Text und Daten zu senden und zu empfangen, ohne sich um neugierige Blicke sorgen zu müssen.
SSH-Clients sind in der Regel Kommandozeilenprogramme, bei denen Sie
als einziges Argument die Adresse des entfernten Rechners angeben
müssen. Wenn sich Ihr Benutzername auf dem entfernten System von dem
unterscheidet, den Sie lokal verwenden, müssen Sie auch diesen angeben.
Wenn Ihr SSH-Client über eine grafische Oberfläche verfügt, wie z. B.
PuTTY oder MobaXterm, geben Sie diese Argumente an, bevor Sie auf
“Verbinden” klicken Im Terminal schreiben Sie etwas wie
ssh userName@hostname
, wobei das Argument wie eine
E-Mail-Adresse ist: das “@”-Symbol wird verwendet, um die persönliche ID
von der Adresse des entfernten Rechners zu trennen.
Bei der Anmeldung an einem Laptop, Tablet oder einem anderen
persönlichen Gerät sind normalerweise ein Benutzername, ein Kennwort
oder ein Muster erforderlich, um unbefugten Zugriff zu verhindern. In
diesen Situationen ist die Wahrscheinlichkeit, dass jemand anderes Ihr
Passwort abfängt, gering, da die Aufzeichnung Ihrer Tastenanschläge
einen böswilligen Exploit oder physischen Zugang erfordert. Bei Systemen
wie login1
, auf denen ein SSH-Server läuft, kann sich jeder
im Netzwerk anmelden oder dies versuchen. Da Benutzernamen oft
öffentlich oder leicht zu erraten sind, ist Ihr Passwort oft das
schwächste Glied in der Sicherheitskette. Viele Cluster verbieten daher
die passwortbasierte Anmeldung und verlangen stattdessen, dass Sie ein
öffentlich-privates Schlüsselpaar mit einem viel stärkeren Passwort
erzeugen und konfigurieren. Auch wenn Ihr Cluster dies nicht
vorschreibt, wird der nächste Abschnitt Sie durch die Verwendung von
SSH-Schlüsseln und eines SSH-Agenten führen, um sowohl Ihre Sicherheit
zu erhöhen als auch die Anmeldung bei entfernten Systemen zu
erleichtern.
Bessere Sicherheit mit SSH-Schlüsseln
Die Lesson Setup enthält Anweisungen für die Installation einer Shell-Anwendung mit SSH. Falls Sie dies noch nicht getan haben, öffnen Sie bitte diese Shell-Anwendung mit einer Unix-ähnlichen Kommandozeilenschnittstelle auf Ihrem System.
SSH-Schlüssel sind eine alternative Methode zur Authentifizierung, um Zugang zu entfernten Computersystemen zu erhalten. Sie können auch zur Authentifizierung bei der Übertragung von Dateien oder für den Zugriff auf entfernte Versionskontrollsysteme (wie GitHub) verwendet werden. In diesem Abschnitt werden Sie ein Paar SSH-Schlüssel erstellen:
- ein privater Schlüssel, den Sie auf Ihrem eigenen Computer aufbewahren, und
- ein öffentlicher Schlüssel, der auf jedem entfernten System platziert werden kann, auf das Sie zugreifen wollen.
Private Schlüssel sind Ihr sicherer digitaler Reisepass
Ein privater Schlüssel, der für jeden außer Ihnen sichtbar ist, sollte als kompromittiert betrachtet werden und muss vernichtet werden. Dazu gehören unzulässige Rechte für das Verzeichnis, in dem er (oder eine Kopie) gespeichert ist, das Durchqueren eines nicht sicheren (verschlüsselten) Netzwerks, der Anhang einer unverschlüsselten E-Mail und sogar die Anzeige des Schlüssels in Ihrem Terminalfenster.
Schützen Sie diesen Schlüssel, als ob er Ihre Haustür aufschließen würde. In vielerlei Hinsicht tut er das auch.
Unabhängig von der Software oder dem Betriebssystem, das Sie verwenden, bitte wählen Sie ein starkes Passwort oder eine Passphrase, um Ihren privaten SSH-Schlüssel zusätzlich zu schützen.
Überlegungen zu SSH-Schlüsselpasswörtern
Wenn Sie dazu aufgefordert werden, geben Sie ein sicheres Passwort ein, das Sie sich merken können. Hierfür gibt es zwei gängige Ansätze:
- Erstellen Sie eine einprägsame Passphrase mit einigen Interpunktionszeichen und Buchstaben-Zahlen-Ersetzungen, 32 Zeichen oder länger. Straßenadressen eignen sich gut; seien Sie jedoch vorsichtig mit Social-Engineering- oder Public-Records-Angriffen.
- Verwenden Sie einen Passwort-Manager und seinen eingebauten Passwort-Generator mit allen Zeichenklassen, 25 Zeichen oder länger. KeePass und BitWarden sind zwei gute Optionen.
- Nichts ist weniger sicher als ein privater Schlüssel ohne Passwort. Wenn Sie die Passworteingabe versehentlich übersprungen haben, gehen Sie zurück und erzeugen Sie ein neues Schlüsselpaar mit einem starken Passwort.
SSH-Schlüssel auf Linux, Mac, MobaXterm und Windows Subsystem für Linux
Sobald Sie ein Terminal geöffnet haben, prüfen Sie, ob bereits SSH-Schlüssel und Dateinamen vorhanden sind, da vorhandene SSH-Schlüssel überschrieben werden.
Wenn ~/.ssh/id_ed25519
bereits existiert, müssen Sie
einen anderen Namen für das neue Schlüsselpaar angeben.
Erzeugen Sie ein neues Schlüsselpaar aus öffentlichem und privatem
Schlüssel mit dem folgenden Befehl, der einen stärkeren Schlüssel als
den Standardschlüssel ssh-keygen
erzeugt, indem Sie diese
Flags aufrufen:
-
-a
(Standardwert ist 16): Anzahl der Runden der Passphrasenableitung; erhöhen Sie diese, um Brute-Force-Angriffe zu verlangsamen. -
-t
(Standard ist rsa): Geben Sie den “Typ” oder kryptographischen Algorithmus an.ed25519
spezifiziert EdDSA mit einem 256-Bit-Schlüssel; er ist schneller als RSA mit einer vergleichbaren Stärke. -
-f
(Standard ist /home/user/.ssh/id_algorithm): Dateiname zum Speichern Ihres privaten Schlüssels. Der Dateiname des öffentlichen Schlüssels ist identisch, mit der Erweiterung.pub
.
Wenn Sie dazu aufgefordert werden, geben Sie ein sicheres Passwort ein, das die obigen Überlegungen berücksichtigt. Beachten Sie, dass sich das Terminal nicht zu ändern scheint, während Sie das Passwort eingeben: Das ist zu Ihrer Sicherheit so gewollt. Sie werden aufgefordert, es noch einmal einzugeben, also machen Sie sich nicht zu viele Gedanken über Tippfehler.
Werfen Sie einen Blick in ~/.ssh
(verwenden Sie
ls ~/.ssh
). Sie sollten zwei neue Dateien sehen:
- Ihr privater Schlüssel (
~/.ssh/id_ed25519
): do not share with anyone! - den gemeinsam nutzbaren öffentlichen Schlüssel
(
~/.ssh/id_ed25519.pub
): Wenn ein Systemadministrator nach einem Schlüssel fragt, ist dies der Schlüssel, den Sie senden müssen. Es ist auch sicher, ihn auf Websites wie GitHub hochzuladen: Er ist dafür gedacht, gesehen zu werden.
Verwenden Sie RSA für ältere Systeme
Wenn die Schlüsselerzeugung fehlgeschlagen ist, weil ed25519 nicht verfügbar ist, versuchen Sie es mit dem älteren (aber immer noch starken und vertrauenswürdigen) RSA Kryptosystem. Prüfen Sie auch hier zunächst, ob ein Schlüssel vorhanden ist:
Wenn ~/.ssh/id_rsa
bereits existiert, müssen Sie einen
anderen Namen für das neue Schlüsselpaar wählen. Erzeugen Sie es wie
oben, mit den folgenden zusätzlichen Flags:
-
-b
legt die Anzahl der Bits des Schlüssels fest. Die Vorgabe ist 2048. EdDSA verwendet eine feste Schlüssellänge, so dass dieses Flag keine Auswirkung haben würde. -
-o
(kein Standard): Verwenden Sie das OpenSSH-Schlüsselformat, anstatt PEM.
Wenn Sie dazu aufgefordert werden, geben Sie ein sicheres Passwort ein und beachten Sie dabei die oben genannten Überlegungen.
Werfen Sie einen Blick in ~/.ssh
(verwenden Sie
ls ~/.ssh
). Sie sollten zwei neue Dateien sehen:
- Ihr privater Schlüssel (
~/.ssh/id_rsa
): do not share with anyone! - den gemeinsam nutzbaren öffentlichen Schlüssel
(
~/.ssh/id_rsa.pub
): Wenn ein Systemadministrator nach einem Schlüssel fragt, ist dies der Schlüssel, den Sie senden müssen. Es ist auch sicher, ihn auf Websites wie GitHub hochzuladen: Er ist dafür gedacht, gesehen zu werden.
SSH-Schlüssel auf PuTTY
Wenn Sie PuTTY unter Windows verwenden, laden Sie
puttygen
herunter und verwenden Sie es, um das
Schlüsselpaar zu erzeugen. Siehe die PuTTY-Dokumentation
für Details.
- Wählen Sie
EdDSA
als Schlüsseltyp. - Wählen Sie
255
als Schlüsselgröße oder -stärke. - Klicken Sie auf die Schaltfläche “Generate”.
- Sie müssen keinen Kommentar eingeben.
- Wenn Sie dazu aufgefordert werden, geben Sie ein sicheres Passwort ein und beachten Sie dabei die oben genannten Überlegungen.
- Speichern Sie die Schlüssel in einem Ordner, den kein anderer Benutzer des Systems lesen kann.
Werfen Sie einen Blick in den von Ihnen angegebenen Ordner. Sie sollten zwei neue Dateien sehen:
- Ihr privater Schlüssel (
id_ed25519
): do not share with anyone! - den gemeinsam nutzbaren öffentlichen Schlüssel
(
id_ed25519.pub
): Wenn ein Systemadministrator nach einem Schlüssel fragt, ist dies der Schlüssel, den Sie senden müssen. Es ist auch sicher, ihn auf Websites wie GitHub hochzuladen: Er ist dafür gedacht, gesehen zu werden.
SSH Agent für einfachere Schlüsselverwaltung
Ein SSH-Schlüssel ist nur so stark wie das Passwort, mit dem er entsperrt wird. Andererseits ist es mühsam, jedes Mal ein komplexes Passwort einzugeben, wenn man sich mit einem Rechner verbindet, und wird schnell langweilig. An dieser Stelle kommt der SSH-Agent ins Spiel.
Wenn Sie einen SSH-Agenten verwenden, können Sie Ihr Passwort für den privaten Schlüssel einmal eingeben und dann den Agenten veranlassen, es für eine bestimmte Anzahl von Stunden oder bis zu Ihrer Abmeldung zu speichern. Solange kein böswilliger Akteur physischen Zugang zu Ihrem Rechner hat, ist das Kennwort auf diese Weise sicher, und Sie müssen das Kennwort nicht mehrmals eingeben.
Merken Sie sich Ihr Passwort, denn sobald es im Agenten abläuft, müssen Sie es erneut eingeben.
SSH-Agenten auf Linux, macOS und Windows
Öffnen Sie Ihr Terminalprogramm und prüfen Sie, ob ein Agent läuft:
-
Wenn Sie eine Fehlermeldung wie diese erhalten,
FEHLER
Error connecting to agent: No such file or directory
… dann müssen Sie den Agenten wie folgt starten:
Was ist in einem
$(...)
?Die Syntax dieses SSH-Agent-Befehls ist ungewöhnlich, basierend auf dem, was wir in der UNIX-Shell-Lektion gesehen haben. Das liegt daran, dass der
ssh-agent
-Befehl eine Verbindung öffnet, auf die nur Sie Zugriff haben, und eine Reihe von Shell-Befehlen ausgibt, die verwendet werden können, um sie zu erreichen - aber sie werden nicht ausgeführt!AUSGABE
SSH_AUTH_SOCK=/tmp/ssh-Zvvga2Y8kQZN/agent.131521; export SSH_AUTH_SOCK; SSH_AGENT_PID=131522; export SSH_AGENT_PID; echo Agent pid 131522;
Der Befehl
eval
interpretiert diese Textausgabe als Befehle und ermöglicht Ihnen den Zugriff auf die gerade erstellte SSH-Agent-Verbindung.Sie könnten jede Zeile der
ssh-agent
-Ausgabe selbst ausführen und das gleiche Ergebnis erzielen. Die Verwendung voneval
macht dies nur einfacher. Andernfalls läuft Ihr Agent bereits: Lassen Sie ihn in Ruhe.
Fügen Sie Ihren Schlüssel zum Agenten hinzu, wobei die Sitzung nach 8 Stunden abläuft:
AUSGABE
Enter passphrase for .ssh/id_ed25519:
Identity added: .ssh/id_ed25519
Lifetime set to 86400 seconds
Während der Dauer (8 Stunden) wird der SSH-Agent bei jeder Verwendung dieses Schlüssels den Schlüssel für Sie bereitstellen, ohne dass Sie einen einzigen Tastendruck eingeben müssen.
SSH-Agent auf PuTTY
Wenn Sie PuTTY unter Windows verwenden, laden Sie
pageant
herunter und verwenden Sie es als SSH-Agent. Siehe
die PuTTY-Dokumentation.
Einloggen in den Cluster
Öffnen Sie Ihr Terminal oder Ihren grafischen SSH-Client und melden
Sie sich beim Cluster an. Ersetzen Sie yourUsername
durch
Ihren Benutzernamen oder den von den Lehrkräften angegebenen.
Sie werden möglicherweise nach Ihrem Passwort gefragt. Achtung: Die
Zeichen, die Sie nach der Passwortabfrage eingeben, werden nicht auf dem
Bildschirm angezeigt. Die normale Ausgabe wird fortgesetzt, sobald Sie
Enter
drücken.
Sie haben vielleicht bemerkt, dass sich die Eingabeaufforderung
geändert hat, als Sie sich mit dem Terminal beim entfernten System
angemeldet haben (wenn Sie sich mit PuTTY angemeldet haben, gilt dies
nicht, da PuTTY kein lokales Terminal anbietet). Diese Änderung ist
wichtig, weil sie Ihnen helfen kann, zu unterscheiden, auf welchem
System die von Ihnen eingegebenen Befehle ausgeführt werden, wenn Sie
sie an das Terminal übergeben. Diese Änderung ist auch eine kleine
Komplikation, mit der wir uns im Laufe des Workshops auseinandersetzen
müssen. Was genau als Eingabeaufforderung (die üblicherweise mit
$
endet) im Terminal angezeigt wird, wenn es mit dem
lokalen System und dem entfernten System verbunden ist, wird
normalerweise für jeden Benutzer unterschiedlich sein. Wir müssen aber
trotzdem angeben, auf welchem System wir Befehle eingeben, also werden
wir die folgende Konvention anwenden:
-
[you@laptop:~]$
, wenn der Befehl auf einem Terminal eingegeben werden soll, das mit Ihrem lokalen Computer verbunden ist -
[yourUsername@login1 ~]
, wenn der Befehl auf einem Terminal eingegeben werden soll, das mit dem entfernten System verbunden ist -
$
, wenn es wirklich keine Rolle spielt, mit welchem System das Terminal verbunden ist.
Schauen Sie sich in Ihrem Remote Home um
Sehr oft sind viele Benutzer versucht, sich eine
Hochleistungsrechner-Installation als eine riesige, magische Maschine
vorzustellen. Manchmal nehmen sie an, dass der Computer, an dem sie sich
angemeldet haben, der gesamte Computer-Cluster ist. Was passiert also
wirklich? Bei welchem Computer haben wir uns angemeldet? Der Name des
aktuellen Computers, auf dem wir angemeldet sind, kann mit dem Befehl
hostname
überprüft werden. (Vielleicht bemerken Sie auch,
dass der aktuelle Hostname auch Teil unserer Eingabeaufforderung
ist)
AUSGABE
login1
Wir befinden uns also definitiv auf dem entfernten Rechner. Als
Nächstes wollen wir herausfinden, wo wir uns befinden, indem wir
pwd
ausführen, um das wArbeitsverzeichnis
dauszugeben.
AUSGABE
/home/yourUsername
Großartig, wir wissen, wo wir sind! Schauen wir mal, was sich in unserem aktuellen Verzeichnis befindet:
AUSGABE
id_ed25519.pub
Die Systemadministratoren haben möglicherweise Ihr Home-Verzeichnis mit einigen hilfreichen Dateien, Ordnern und Verknüpfungen (Shortcuts) zu für Sie reserviertem Speicherplatz auf anderen Dateisystemen konfiguriert. Wenn dies nicht der Fall ist, kann Ihr Home-Verzeichnis leer erscheinen. Um dies zu überprüfen, nehmen Sie versteckte Dateien in Ihre Verzeichnisliste auf:
AUSGABE
. .bashrc id_ed25519.pub
.. .ssh
In der ersten Spalte ist .
ein Verweis auf das aktuelle
Verzeichnis und ..
ein Verweis auf dessen übergeordnetes
Verzeichnis (/home
). Sie können die anderen Dateien oder
ähnliche Dateien sehen, müssen es aber nicht: .bashrc
ist
eine Shell-Konfigurationsdatei, die Sie mit Ihren Präferenzen bearbeiten
können; und .ssh
ist ein Verzeichnis, das SSH-Schlüssel und
eine Aufzeichnung der autorisierten Verbindungen speichert.
Installieren Sie Ihren SSH-Schlüssel
There May Be a Better Way
Die Richtlinien und Praktiken für den Umgang mit SSH-Schlüsseln variieren von HPC-Cluster zu HPC-Cluster: Befolgen Sie die von den Cluster-Administratoren oder der Dokumentation bereitgestellten Hinweise. Insbesondere wenn es ein Online-Portal für die Verwaltung von SSH-Schlüsseln gibt, verwenden Sie dieses anstelle der hier beschriebenen Anweisungen.
Wenn Sie Ihren öffentlichen SSH-Schlüssel mit scp
übertragen haben, sollten Sie id_ed25519.pub
in Ihrem
Home-Verzeichnis sehen. Um diesen Schlüssel zu “installieren”, muss er
in einer Datei namens authorized_keys
unter dem Ordner
.ssh
aufgeführt sein.
Wenn der Ordner .ssh
oben nicht aufgeführt wurde, dann
existiert er noch nicht: Erstellen Sie ihn.
Verwenden Sie nun cat
, um Ihren öffentlichen Schlüssel
zu drucken, aber leiten Sie die Ausgabe um, indem Sie sie an die Datei
authorized_keys
anhängen:
Das war’s! Trennen Sie die Verbindung und versuchen Sie dann, sich wieder bei der Gegenstelle anzumelden: Wenn Ihr Schlüssel und Ihr Agent korrekt konfiguriert wurden, sollten Sie nicht nach dem Passwort für Ihren SSH-Schlüssel gefragt werden.
Hauptpunkte
- Ein HPC-System ist eine Gruppe von vernetzten Maschinen.
- HPC-Systeme bieten typischerweise Login-Knoten und eine Reihe von Worker-Knoten.
- Die Ressourcen auf den unabhängigen (Arbeits-)Knoten können in Umfang und Art variieren (Menge des Arbeitsspeichers, Prozessorarchitektur, Verfügbarkeit von über das Netzwerk eingebundenen Dateisystemen usw.).
- Dateien, die auf einem Knoten gespeichert sind, sind auf allen Knoten verfügbar.