Sikov - stock.adobe.com

SSH-Schlüssel auf GitHub für den Netzwerkzugang erstellen

Mit SSH-Schlüsseln wird die Identität eines Benutzers oder einer Anwendung überprüft. Erfahren Sie, wie Sie SSH-Schlüssel in GitHub erstellen und speichern.

Öffentliche und private Schlüssel sind der sicherste Weg, um auf Server zuzugreifen. Wenn der schlüsselbasierte Zugriff richtig ausgeführt wird, gibt es für einen potenziellen Eindringling keine Möglichkeit, sich Zugang zu verschaffen. 

Der Nachteil ist, dass Linux- und Windows-Administratoren diese Schlüssel verwalten müssen. Das ist zwar nicht kompliziert, aber die Schlüsselverwaltung kann mühsam sein, wenn sie bei jeder Verwendung wiederholt werden muss. Helfen können dabei die Funktionen zur Versionskontrolle von GitHub.

Um Schlüssel sicher und ordnungsgemäß erstellen, verwenden und installieren zu können, müssen Sie zunächst verstehen, was ein SSH-Schlüssel ist. Folgen Sie dann am besten dem hier vorgestellten Ansatz, um Schlüssel zu erstellen. Diesen können Sie auf GitHub hochladen und in Ubuntu- und Windows-Umgebungen verwenden.

Grundlagen SSH-Schlüssel

SSH steht für Secure Shell Protocol beziehungsweise Secure Socket Shell und ist eine Methode, um eine sichere Verbindung über ein ungesichertes Netzwerk herzustellen. Das Verfahren basiert auf Client-Server-Kommunikation, bei der ein SSH-Client mit einem SSH-Server kommuniziert. SSH stellt eine Reihe von Funktionen bereit, darunter Passwort- und Public-Access-Key-Authentifizierung, Verschlüsselung, Fernverwaltung von Systemen und die Generierung von sicheren Tunneln für andere Protokolle.

Öffentliche (Public) und private (Private) Schlüsselpaare sind Verschlüsselungsmethoden, die zusammenwirken, um den System- oder Anwendungszugang zu kontrollieren. Der öffentliche Schlüssel wird über eine Zertifizierungsstelle wie Comodo SSL, DigiCert und Entrust Datacard bereitgestellt und verhindert den unbefugten Zugriff auf das Netzwerk oder die Anwendung. Der private Schlüssel hingegen, manchmal auch als geheimer Schlüssel bezeichnet, ist eine Zeichenkette aus zufälligen oder pseudozufälligen Zeichen, die den Benutzer oder die Anwendung, die Zugriff wünscht, identifiziert.

Erstellen von Anmeldeinformationen in Linux

Linux und Microsoft Windows handhaben die Schlüsselerstellung unterschiedlich. In diesem Beispiel verwenden wir die Linux-Distribution Ubuntu.

Wenn Sie Ubuntu einsetzen, um ein öffentliches/privates Schlüsselpaar zu generieren, verwenden Sie folgenden Befehl:

ssh-keygen -t rsa

Dieser Befehl erzeugt ein verstecktes Verzeichnis mit dem Namen .ssh, das zwei Dateien enthält: id_rsa und id_rsa.pub. Die Erweiterung PUB bezeichnet den öffentlichen Schlüssel.

Unter Windows sieht die Sache etwas anders aus. Laden Sie das PuTTY-Installationsprogramm, das auch die PuTTYgen-Datei enthält, herunter und installieren Sie es.

Erstellen von Anmeldeinformationen in PuTTYgen

Öffnen Sie PuTTYgen und klicken Sie unter dem Actions-Symbol auf Generate, wie in Abbildung 1 dargestellt.

Schlüssel in PuTTYgen generieren
Abbildung 1: Einen Schlüssel in PuTTYgen generieren.

Sobald das Programm läuft, sollte es so aussehen wie in Abbildung 2 dargestellt.

Key Generator in PuTTY
Abbildung 2: Der Key Generator in PuTTY.

Der PuTTY Key Generator fragt nach einem Schlüsselkommentar. Verwenden Sie etwas Praktisches und Sinnvolles. Schützen Sie den privaten Schlüssel mit einem Kennwort.

An diesem Punkt müssen Windows-Administratoren drei Dinge tun:

  • Kopieren Sie die autorisierten OpenSSH-Schlüsseldateien. Diese Informationen werden nicht erneut angezeigt, und Sie brauchen eine Kopie, um sie auf GitHub hochzuladen. Bewahren Sie eine Kopie des OpenSSH-Schlüssels auf, da PuTTY nicht das gleiche Format wie Linux verwendet.
  • Klicken Sie auf Save public key. Dies ist für die Verwendung durch PuTTY gedacht, da PuTTY sich nicht an die Standardformate für öffentliche Schlüssel hält.
  • Speichern Sie den privaten Schlüssel. Bewahren Sie ihn an einem zugänglichen, aber sicheren Ort auf. Der private Schlüssel schaltet den Serverzugang frei.

Sobald Sie den Public-Private-Key haben, laden Sie den öffentlichen Schlüssel auf GitHub hoch. Melden Sie sich in einem Webbrowser bei GitHub an und navigieren Sie zu den Einstellungen in der oberen rechten Ecke.

Windows mit installiertem WSL

Die Windows-Option mag zwar umständlich erscheinen, aber wenn Sie das Windows Subsystem for Linux (WSL) installiert haben, stehen Ihnen die gleichen Tools wie einem Linux-Administrator zur Verfügung - zum Beispiel OpenSSL.exe. Alle Dateien befinden sich im Verzeichnis \Windows\System32\OpenSSH, wie in Abbildung 3 dargestellt. Um diese Version zu verwenden, folgen Sie den oben aufgeführten Linux-Schritten.

Dateien im Verzeichnis OpenSSH
Abbildung 3: Die Dateien im Verzeichnis OpenSSH.

Um einen neuen Schlüssel hinzuzufügen, klicken Sie auf New SSH, geben Sie ihm einen Namen – kurz und aussagekräftig – und fügen Sie den gesamten öffentlichen Schlüssel ein. Dies kann entweder id_rsa.pub sein oder eine Kopie des OpenSSH-Textes, der von dem in PuTTYgen erzeugten Schlüssel kopiert wurde. Klicken Sie dann auf Save.

SSH-Schlüssel erstellen
Abbildung 4: Einen SSH-Schlüssel erstellen.

Linux-Benutzer finden eine Kopie der OpenSSH-Datei im Verzeichnis .ssh in ihrem Home-Ordner unter dem Namen id_rsa.pub.

Nachdem der öffentliche Schlüssel hochgeladen wurde, muss der Administrator den Schlüssel sowohl auf den aktuellen als auch auf den neuen Servern bereitstellen. Nachfolgend finden Sie eine kurze Anleitung dazu.

SSH-Schlüssel von GitHub in die Ubuntu-Installation importieren

Bei der Neuinstallation von Ubuntu-Servern zeigt das Installationsprogramm eine Seite mit dem Titel SSH-Setup an. Um die Importfunktion zu nutzen, wählen Sie die Option Install OpenSSH-Server. Der Installer erlaubt es Ihnen, die zu verwendenden Schlüssel zu importieren, wie in Abbildung 5 dargestellt. Wählen Sie Import from GitHub, geben Sie den Benutzernamen ein und verifizieren Sie den Schlüssel.

SSH Setup
Abbildung 5: Einen SSH-Server installieren.

Dies ist auch nachträglich möglich. Um zum Beispiel SSH-Schlüssel, die auf GitHub gespeichert sind, in einen bestehenden Ubuntu-Server oder -Desktop zu importieren, melden Sie sich zunächst als der entsprechende Benutzer an. Verwenden Sie dann den folgenden Befehl. Dieser liefert das gleiche Ergebnis, als wäre er bei der Installation ausgeführt worden:

ssh-import-id-gh <github_id>

Diese Implementierung ermöglicht den Schlüsselimport von GitHub. Der Administrator kann sich mit einem einzigen Schlüssel anmelden. Um auf diese neuen Server zuzugreifen, verwenden Sie Standard-SSH unter Linux. Der Schlüssel sollte automatisch an den Server weitergegeben werden.

PuTTY unter Windows speichert den Schlüssel allerdings nicht in dem standardmäßigen, für Menschen lesbaren Format. Stattdessen verwendet es zum Speichern der PPK-Schlüssel ein eigenes Dateilayout. Dieses kann nur von PuTTY gelesen werden. Wenn die Schlüsselpaare über PuTTYgen erzeugt werden, erscheint ein Teil der Schnittstelle, der den digitalen Standardschlüssel enthält. Kopieren Sie diesen Text, der von Linux und fast allen anderen Systemen erwartet wird, und fügen Sie ihn auf dem betreffenden Linux-Server ein. Ohne eine Kopie müssen Administratoren den Generierungsprozess wiederholen. Bei den in WSL erzeugten Schlüsseln handelt es sich um digitale Standardschlüsselpaare.

Probleme bei der Anmeldung beheben

Wenn es Probleme mit dem Anmeldevorgang gibt, können Sie unter Linux den folgenden Befehl verwenden:

ssh -vvv user@server

Mit der Option -v wird eine Ausgabe erzeugt, die einen detaillierten Echtzeitbericht über die Vorgänge während des Anmeldevorgangs enthält (siehe Abbildung 6).

Linux Befehlszeile
Abbildung 6: Einen detaillierten Bericht aller Prozesse anzeigen.

Mit dem Switch -v zeigt die Ausgabe eine Warnmeldung an, wenn zum Beispiel jemand den erstellten Schlüssel falsch kopiert hat oder nicht über die entsprechenden Berechtigungen verfügt. Ohne die Option -v schlägt der Vorgang entweder fehl oder es wird eine semigenerische Fehlermeldung ausgegeben. Um auf tiefere Ebenen zuzugreifen – tiefere Ebenen als die, die ein durchschnittlicher Administrator benutzen kann – fügen Sie zusätzliche v's zum Debug hinzu.

Erfahren Sie mehr über Netzwerksicherheit