So generieren Sie SSH-Schlüssel für GitHub
Veröffentlicht: 2022-02-05Git und GitHub sind unverzichtbare Tools für jeden Entwickler. Sie werden in fast allen Arten von Softwareentwicklungsprojekten eingesetzt.
Es gibt andere Git-Hosting-Dienste wie Gitlab und Bitbucket, aber GitHub ist die beliebteste Wahl für Entwickler. Sie können Ihr Profil sogar bearbeiten, um es für Personalvermittler attraktiver zu machen.
Du kannst Git und GitHub verwenden, um deine Projekte zu organisieren, mit anderen Entwicklern zusammenzuarbeiten und – natürlich – bei Kinsta.
Da Git und GitHub verwandte, aber unterschiedliche Tools sind, müssen Sie Ihren Workflow ständig mit jedem von ihnen aktualisieren.
Wir empfehlen die Verwendung von SSH-Schlüsseln für jeden Ihrer Computer. In diesem Tutorial lernen Sie also, was sie sind, einige ihrer Vorteile und wie Sie GitHub-SSH-Schlüssel generieren und konfigurieren.
Lass uns anfangen!
Was sind SSH-Schlüssel?
Einfach ausgedrückt sind SSH-Schlüssel Anmeldeinformationen, die für das SSH-Protokoll (Secure Shell) verwendet werden, um einen sicheren Zugriff auf entfernte Computer über das Internet zu ermöglichen. Normalerweise erfolgt diese Authentifizierung in einer Befehlszeilenumgebung.
Dieses Protokoll basiert auf einer Client-Server-Architektur, was bedeutet, dass Sie als Benutzer (oder „Client“) eine spezielle Software, einen so genannten SSH-Client, verwenden müssen, um sich bei einem Remote-Server anzumelden und Befehle auszuführen. Dies ist im Grunde das, was Sie tun, wenn Sie sich über ein Terminal bei GitHub authentifizieren.

Aber SSH wird nicht nur für GitHub verwendet. Es wird häufig von anderen Plattformen wie Kinsta, Google Cloud und Amazon Web Services verwendet, um einen sicheren Kanal für den Zugriff auf ihre Dienste zu schaffen.
Wenn Sie sich nun damit befassen, wie SSH-Schlüssel wirklich funktionieren, müssen Sie die Unterschiede zwischen öffentlichen und privaten Schlüsseln verstehen.
Öffentliche vs. private Schlüssel
Beginnen wir mit den Grundlagen.
Das SSH-Protokoll verwendet eine Kryptografietechnik, die als asymmetrische Verschlüsselung bezeichnet wird. Dieser Begriff mag kompliziert und seltsam klingen, aber nichts könnte weiter von der Wahrheit entfernt sein.
Grundsätzlich ist asymmetrische Verschlüsselung ein System, das ein Schlüsselpaar verwendet, nämlich öffentliche und private Schlüssel.
Wie Sie sich denken können, kann der öffentliche Schlüssel mit jedem geteilt werden. Sein Hauptzweck besteht darin, Daten zu verschlüsseln und die Nachricht in einen Geheimcode oder Chiffretext umzuwandeln. Dieser Schlüssel wird normalerweise an andere Systeme – beispielsweise Server – gesendet, um die Daten zu verschlüsseln, bevor sie über das Internet gesendet werden.
Auf der anderen Seite ist der private Schlüssel derjenige, den Sie für sich behalten müssen. Es wird verwendet, um die verschlüsselten Daten mit Ihrem öffentlichen Schlüssel zu entschlüsseln. Ohne sie ist es unmöglich, Ihre verschlüsselten Informationen zu entschlüsseln.
Diese Methode ermöglicht es Ihnen und dem Server, einen sicheren Kommunikationskanal für die Übertragung der Informationen aufrechtzuerhalten.
Folgendes passiert im Hintergrund, wenn Sie sich über SSH mit einem Server verbinden:
- Der Client sendet den öffentlichen Schlüssel an den Server.
- Der Server fordert den Client auf, eine mit dem öffentlichen Schlüssel verschlüsselte Zufallsnachricht mit dem privaten Schlüssel zu signieren.
- Der Client signiert die Nachricht und leitet das Ergebnis an den Server weiter.
- Zwischen dem Client und dem Server wird eine sichere Verbindung aufgebaut.
Es ist wichtig, dass Sie Ihre privaten Schlüssel sicher aufbewahren und unter keinen Umständen mit anderen teilen. Sie sind buchstäblich der Schlüssel zu allen Informationen, die an Sie gesendet werden.
Verwenden von SSH-Schlüsseln mit GitHub
Seit dem 13. August 2021 akzeptiert Github keine Passwortauthentifizierung mehr für den Zugriff über die Befehlszeile. Das bedeutet, dass Sie sich jetzt über ein persönliches Zugriffstoken authentifizieren oder einen SSH-Schlüssel verwenden müssen (etwas bequemer).
Folgendes passiert, wenn Sie versuchen, sich mit Ihrem GitHub-Passwort über HTTP in einem Terminal zu authentifizieren:
Username for 'https://github.com': yourusername Password for 'https://[email protected]': remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information. fatal: Authentication failed for 'https://github.com/yourusername/repository.git/'
GitHub benötigt Ihren öffentlichen Schlüssel, um Sie zu autorisieren, Ihre Repos über SSH zu bearbeiten.
Sehen wir uns an, wie Sie SSH-Schlüssel lokal generieren können.
So generieren Sie SSH-Schlüssel lokal
Nachdem Sie nun ein wenig über das SSH-Protokoll und die Unterschiede zwischen öffentlichen und privaten Schlüsseln Bescheid wissen, ist es an der Zeit, den sicheren SSH-Kanal zwischen Ihrem Computer und Ihren GitHub-Repositorys einzurichten.
Bevor wir fortfahren, sollten Sie bereits ein GitHub-Konto und ein Terminal/eine Eingabeaufforderung mit Git auf Ihrem System installiert haben. Wenn Sie Windows ausführen, stellen Sie sicher, dass Sie Git Bash installiert haben, das alle Tools enthält, die Sie zusammen mit diesem integrierten Tutorial benötigen.
Der OpenSSH-Client ist die beliebteste Open-Source-Software, die für die Verbindung über SSH verwendet wird. Sie müssen sich keine Gedanken über Ihr Betriebssystem machen, da es standardmäßig unter Linux, macOS und Windows 10 installiert ist.
Sie müssen eine Eingabeaufforderung unter Windows oder ein Terminal auf Unix-basierten Systemen starten, um lokale SSH-Schlüssel zu generieren. Normalerweise können Sie dies tun, indem Sie in Ihrem Anwendungsfenster nach „Terminal“, „cmd“ oder „Powershell“ suchen und dann auf das angezeigte Symbol klicken.

Danach sollten Sie ein Fenster ähnlich dem folgenden Bild haben.

Führen Sie den folgenden Befehl aus, um ein lokales SSH-Schlüsselpaar zu generieren:
ssh-keygen -t ed25519 -C "[email protected]"
Es ist Zeit, dir ein Geheimnis zu verraten: Niemand kann sich diesen Befehl wirklich merken! Die meisten Entwickler müssen es jedes Mal googeln, weil:
- Es ist ein wirklich langer Befehl mit vergesslichen, zufällig erscheinenden Zahlen.
- Wir verwenden es selten, daher lohnt es sich nicht, es die meiste Zeit in Erinnerung zu behalten.
Es ist jedoch wichtig, jeden Befehl zu verstehen, den wir in unsere Terminals einführen, also lassen Sie uns sehen, was jeder Teil dieses Befehls bedeutet.
- ssh-keygen: Das Befehlszeilentool zum Erstellen eines neuen SSH-Schlüsselpaars. Sie können seine Flags mit
ssh-keygen help
sehen - -t ed25519: Das Flag
-t
wird verwendet, um den Algorithmus anzugeben, der zum Erstellen der digitalen Signatur des Schlüsselpaars verwendet wird. Wenn Ihr System dies unterstützt, isted25519
der beste Algorithmus, den Sie zum Erstellen von SSH-Schlüsselpaaren verwenden können. - -C „E-Mail“: Das Flag
-c
wird verwendet, um einen benutzerdefinierten Kommentar am Ende des öffentlichen Schlüssels bereitzustellen, der normalerweise die E-Mail-Adresse oder Identifikation des Erstellers des Schlüsselpaars ist.
Nachdem Sie den Befehl in Ihr Terminal eingegeben haben, müssen Sie die Datei eingeben, in der Sie die Schlüssel speichern möchten. Standardmäßig befindet es sich in Ihrem Home-Verzeichnis in einem versteckten Ordner namens „.ssh“, aber Sie können es beliebig ändern.

Dann werden Sie nach einer Passphrase gefragt, die Sie Ihrem Schlüsselpaar hinzufügen können. Dies fügt eine zusätzliche Sicherheitsebene hinzu, falls Ihr Gerät zu irgendeinem Zeitpunkt kompromittiert wird. Es ist nicht obligatorisch, eine Passphrase hinzuzufügen, aber es wird immer empfohlen.
So sieht der gesamte Prozess aus:

Wie Sie sehen können, generiert dieser Befehl zwei Dateien in dem von Ihnen ausgewählten Verzeichnis ( normalerweise ~/.ssh ): den öffentlichen Schlüssel mit der Erweiterung .pub
und den privaten Schlüssel ohne Erweiterung.
Wir zeigen Ihnen später, wie Sie den öffentlichen Schlüssel zu Ihrem GitHub-Konto hinzufügen.
SSH-Schlüssel zu ssh-agent hinzufügen
Das ssh-agent- Programm läuft im Hintergrund, bewahrt Ihre privaten Schlüssel und Passphrasen sicher auf und hält sie für die Verwendung durch ssh bereit. Es ist ein großartiges Dienstprogramm, das Ihnen die Eingabe Ihrer Passphrase erspart, wenn Sie sich mit einem Server verbinden möchten.
Aus diesem Grund fügen Sie diesem Agenten Ihren neuen privaten Schlüssel hinzu. Hier ist wie:
- Stellen Sie sicher, dass ssh-agent im Hintergrund läuft.
eval `ssh-agent` # Agent pid 334065
Wenn Sie eine ähnliche Meldung wie diese erhalten, ist alles in Ordnung. Dies bedeutet, dass der SSH-Agent unter einer bestimmten Prozess-ID (PID) ausgeführt wird.
- Fügen Sie Ihren privaten SSH-Schlüssel (den ohne Erweiterung) zum ssh-agent hinzu.
ssh-add ~/.ssh/kinsta_keys
Ersetzen Sie kinsta_keys durch den Namen Ihres SSH-Schlüssels. Wenn dies der erste Schlüssel ist, den Sie erstellt haben, sollte er „id_algorithm_used“ heißen, zum Beispiel id_ed25519 .
SSH-Schlüssel zum GitHub-Konto hinzufügen
Der letzte Schritt besteht darin, Ihren öffentlichen Schlüssel zu Ihrem GitHub-Konto hinzuzufügen. Folgen Sie einfach diesen Anweisungen:
- Kopieren Sie Ihren öffentlichen SSH-Schlüssel in Ihre Zwischenablage. Sie können die Datei dort, wo sie sich befindet, mit einem Texteditor öffnen und kopieren oder das Terminal verwenden, um ihren Inhalt anzuzeigen.
cat ~/.ssh/kinsta_keys.pub # ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJl3dIeudNqd0DPMRD6OIh65tjkxFNOtwGcWB2gCgPhk [email protected]
- Melden Sie sich bei GitHub an ] und gehen Sie zum oberen rechten Bereich der Seite, klicken Sie auf Ihr Profilfoto und wählen Sie Einstellungen.
GitHub-Einstellungen. - Klicken Sie dann in Ihren Profileinstellungen auf SSH- und GPG-Schlüssel .
SSH- und GPG-Schlüssel. - Klicken Sie auf die Schaltfläche Neuer SSH-Schlüssel .
Neue SSH-Schlüsselschaltfläche. - Geben Sie Ihrem neuen SSH-Schlüssel auf GitHub einen Titel – normalerweise das Gerät, von dem aus Sie diesen Schlüssel verwenden. Fügen Sie dann den Schlüssel in den Schlüsselbereich ein.
Fügen Sie ein neues SSH-Schlüsselformular hinzu. - Fügen Sie Ihren SSH-Schlüssel hinzu.
Schaltfläche SSH-Schlüssel hinzufügen.
Testen Sie die SSH-Verbindung mit einem Repo-Push
Es ist an der Zeit, alles zu testen, was Sie bisher getan haben. Sie werden mithilfe von SSH Änderungen vornehmen, festschreiben und auf eines Ihrer vorhandenen Repos übertragen, um sicherzustellen, dass Ihre Verbindung korrekt eingerichtet ist.
Alle Kinsta-Hosting-Pläne beinhalten 24/7-Support durch unsere erfahrenen WordPress-Entwickler und -Ingenieure. Chatten Sie mit demselben Team, das unsere Fortune-500-Kunden unterstützt. Sehen Sie sich unsere Pläne an!
Für unser Beispiel ändern wir die einfache HTML-Site, die wir in unserem Git-Tutorial für die Webentwicklung erstellt haben.
Zuerst müssen wir das Repository auf unseren lokalen Computer klonen. Wir können zur Repo-Seite auf GitHub gehen und die bereitgestellte SSH-Adresse kopieren.

Klonen Sie dann das Repo mit einem Terminal:
git clone [email protected]:DaniDiazTech/HTML-site.git
Lassen Sie uns nun ein einfaches <h1>
-Tag in die Datei index.html einfügen :
... <div class="container my-2"> <h1 class="text-center">A new title!<h1> </div> <div class="container my-3"> ...

Wir berühren kein JavaScript oder CSS, um diese Bearbeitung einfach zu halten. Aber wenn du mit JavaScript vertraut bist, findest du vielleicht einen Platz bei Kinsta. Überprüfen Sie die Programmierkenntnisse, die Sie benötigen, um Teil des Kinsta-Teams zu sein.
Danach übernehmen Sie die Änderungen:
git commit -am "Added a simple title"
Und pushen Sie sie wie gewohnt in GitHub.
git push
Wenn alles geklappt hat, herzlichen Glückwunsch! Sie richten einfach eine SSH-Verbindung zwischen Ihrem Computer und GitHub ein.
Verwalten Sie mehrere SSH-Schlüssel für verschiedene GitHub-Konten
Wenn Sie mehrere GitHub-Konten haben – sagen wir, eines für Ihre persönlichen Projekte und eines für Ihre Arbeit – ist es schwierig, SSH für beide zu verwenden. Normalerweise benötigen Sie separate Computer, um sich bei verschiedenen GitHub-Konten zu authentifizieren.
Dies kann jedoch leicht gelöst werden, indem die SSH-Konfigurationsdatei konfiguriert wird.
Lassen Sie uns darauf eingehen.
- Erstellen Sie ein weiteres SSH-Schlüsselpaar und fügen Sie es Ihrem anderen GitHub-Konto hinzu. Merken Sie sich den Namen der Datei, der Sie den neuen Schlüssel zuweisen.
ssh-keygen -t ed25519 -C "[email protected]"
- Erstellen Sie die SSH-Konfigurationsdatei. Die Konfigurationsdatei teilt dem ssh-Programm mit, wie es sich verhalten soll. Standardmäßig ist die Konfigurationsdatei möglicherweise nicht vorhanden, erstellen Sie sie also im Ordner .ssh/:
touch ~/.ssh/config
- Ändern Sie die SSH-Konfigurationsdatei. Öffnen Sie die Konfigurationsdatei und fügen Sie den folgenden Code ein:
#Your day-to-day GitHub account Host github.com HostName github.com IdentityFile ~/.ssh/id_ed25519 IdentitiesOnly yes # Work account Host github-work HostName github.com IdentityFile ~/.ssh/work_key_file IdentitiesOnly yes
Jedes Mal, wenn Sie sich über SSH mit Ihrem Arbeits- oder Sekundärkonto authentifizieren müssen, optimieren Sie die Repo-SSH-Adresse ein wenig, von:
[email protected]:workaccount/project.git
…zu:
[email protected]:workaccount/project.git
Zusammenfassung
Herzlichen Glückwunsch – Sie haben die meisten praktischen Kenntnisse gelernt, die Sie benötigen, um sich über SSH mit GitHub zu verbinden!
In diesem Tutorial wurden die Notwendigkeit des SSH-Protokolls, die Unterschiede zwischen öffentlichen und privaten Schlüsseln, das Generieren von Schlüsseln, das Hinzufügen zu GitHub und sogar das Verwalten mehrerer SSH-Schlüssel für verschiedene GitHub-Konten erläutert. Denken Sie daran, dass Ihr privater Schlüssel so bleiben muss, es sei denn, Sie möchten den Zugriff auf alles verlieren: privat.
Mit diesem Wissen sind Sie jetzt bereit, einen fehlerfreien Workflow mit Git und GitHub zu entwickeln. Codieren Sie weiter!