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.

Connect to cluster

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:

  1. 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.
  2. 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.
  3. 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.

BASH

[you@laptop:~]$ ls ~/.ssh/

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.

BASH

[you@laptop:~]$ ssh-keygen -a 100 -f ~/.ssh/id_ed25519 -t ed25519

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:

BASH

[you@laptop:~]$ ls ~/.ssh/

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.

BASH

[you@laptop:~]$ ssh-keygen -a 100 -b 4096 -f ~/.ssh/id_rsa -o -t rsa

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:

BASH

[you@laptop:~]$ ssh-add -l
  • 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:

    BASH

    [you@laptop:~]$ eval $(ssh-agent)

    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!

    BASH

    [you@laptop:~]$ ssh-agent

    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 von eval 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:

BASH

[you@laptop:~]$ ssh-add -t 8h ~/.ssh/id_ed25519

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.

Übertragen Sie Ihren öffentlichen Schlüssel

BASH

[you@laptop:~]$ scp ~/.ssh/id_ed25519.pub yourUsername@cluster.hpc-carpentry.org:~/

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.

BASH

[you@laptop:~]$ ssh yourUsername@cluster.hpc-carpentry.org

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)

BASH

[yourUsername@login1 ~] hostname

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.

BASH

[yourUsername@login1 ~] pwd

AUSGABE

/home/yourUsername

Großartig, wir wissen, wo wir sind! Schauen wir mal, was sich in unserem aktuellen Verzeichnis befindet:

BASH

[yourUsername@login1 ~] ls

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:

BASH

[yourUsername@login1 ~] ls -a

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.

BASH

[yourUsername@login1 ~] mkdir ~/.ssh

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:

BASH

[yourUsername@login1 ~] cat ~/id_ed25519.pub >> ~/.ssh/authorized_keys

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.

BASH

[yourUsername@login1 ~] logout

BASH

[you@laptop:~]$ ssh yourUsername@cluster.hpc-carpentry.org

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.