Um mit dem GitHub-Server kommunizieren zu können, sollte mindestens ein SSH-Key im GitHub-Konto hinterlegt werden. Sofern ihr noch keinen Schlüssel erstellt habt, muss er zuvor angelegt werden. Dieser Abschnitt gilt äquivalent auch für andere Git-Server, wie GitLab.
Falls euch nicht bekannt ist, ob schon ein SSH-Key angelegt wurde, könnt ihr den ~/.ssh-Ordner überprüfen. Ein SSH-Key setzt sich aus zwei Dateien zusammen. Dies ist zum einen der private und zum anderen der öffentliche Schlüssel. Beispielsweise ist die Datei id_rsa der private Schlüssel, während id_rsa.pub der öffentliche Schlüsselteil ist. Die Dateiendung .pub steht für »public« und somit öffentlich.
SSH ist sowohl ein Protokoll als auch ein Programm, um eine verschlüsselte Netzwerkverbindung mit einem anderen Server herstellen zu können. Der gängige Einsatz ist die Ausführung einer Shell über das Netzwerk auf einem anderen Server, um dort einige Operationen durchführen zu können. SSH wird für Git verwendet, um die Kommunikation zwischen Git-Repositorys sicher und verschlüsselt zu übertragen. Das HTTPS-Protokoll wird zwar auch unterstützt, doch ist es unkomfortabel und unsicherer, da defaultmäßig immer Nutzername und Passwort eingegeben oder unverschlüsselt auf der Festplatte abgespeichert werden müssen. Bei einem SSH Key ist das Ganze angenehmer, dazu aber später mehr.
Sofern noch kein SSH Key erstellt wurde, könnt ihr mit dem folgenden Befehl ein neues Schlüsselpaar erzeugen. Ersetzt dabei die E-Mail-Adresse durch eure eigene:

Dieser Befehl erzeugt ein RSA-Schlüsselpaar mit einer Schlüssellänge von 4096 Bit. Beim Aufruf könt ihr eure E-Mail-Adresse angeben. Das Kommando ist interaktiv, sodass einige Nachfragen gestellt werden, in denen ihr entweder die Standard-Vorschläge akzeptieren oder einen alternativen Wert angeben könnt.

Zuerst wird abgefragt, in welchem Pfad die SSH-Keypairs gespeichert werden sollen. Im Standard ist es im .ssh-Ordner im Home-Verzeichnis unter dem Namen id_rsa. Das könnt ihr entweder so akzeptieren oder einen eigenen Namen und Pfad für die Keys angeben: /home/$USER/.ssh/id_github.

Den privaten Schlüsselteil des Schlüsselpaares könnt ihr mit einem Passwort absichern. Es wird strengstens empfohlen, den Key sicher abzuspeichern und zudem ein gutes und sicheres Passwort zu setzen, denn sonst können unbefugte Personen vollen Zugriff auf die Repositorys erlangen, falls der private Schlüssel mitsamt Passwort in die falschen Hände gelangen sollte. Das Passwort des privaten Schlüssels lässt sich im Nachhinein auch ohne die Neuerstellung des Schlüssels ändern.

Die SSH Keys wurden nun erfolgreich angelegt und sind in diesem Fall unter /home/$USER/.ssh/id_github und /home/$USER/.ssh/id_github.pub zu finden. Der öffentliche Schlüssel id_github.pub kann ohne Bedenken publiziert werden, falls jemand euch Zugriff auf Server oder Repositorys geben möchte, darunter eben auch GitHub. Die Verbindung kann nur hergestellt werden, wenn man im Besitz des passenden privaten Schlüssels inklusive des gesetzten Passworts ist. Deshalb ist es umso wichtiger, dass sowohl der private Schlüssel als auch das dazugehörige Passwort nicht in falsche Hände geraten. Falls dies doch einmal der Fall sein sollte, könnt ihr neue SSH Keys generieren. Die öffentlichen SSH Keys müssen anschließend an den entsprechenden Stellen ausgetauscht werden.
Zurück zu GitHub: Der öffentliche SSH-Schlüssel muss noch dem GitHub-Repository hinzugefügt werden. Dies ist in den GitHub-Account-Einstellungen unter https://github.com/settings/ssh möglich. Als Titel könnt ihr einen beliebigen Text für den SSH-Schlüssel setzen und im Feld »Key« muss der Inhalt der Datei id_rsa.pub bzw. id_github.pub eingefügt werden.


Dieser Artikel ist ein Auszug aus dem Buch „Versionsverwaltung mit Git“ von Sujeevan Vijayakumaran. Alle Infos zum Buch, das Inhaltsverzeichnis und eine kostenlose Leseprobe findet ihr bei uns im Shop.