GitHub bietet schon seit längerer Zeit den Dateiaustausch via HTTPS oder SSH an. Ich habe mich bis jetzt immer für die HTTPS Variante entschieden, da es der Standard bei Github ist, erwäge jedoch nun zur SSH Übertragung zu wechseln. Dadurch habe ich den Vorteil, dass ich meinem System einen Schlüssel geben kann, welcher mich automatisch authentifiziert. Ich müsste nie wieder ein Passwort oder einen Authentifizierungsschlüssel eingeben, sondern mein System autorisiert sich mit einer mitgelieferten Datei alleine.
Ich möchte dir in diesem Artikel erklären, wie man einen SSH-Key erstellen, ihn bei GitHub hinterlegen und seine Repositorien auf die SSH Verbindungen migrieren kann. Dazu verwende ich Linux, Windows und Mac. Sollte ein Befehl nicht (mehr) funktionieren, melde dich bitte im Discord Server oder in den Kommentaren.
Öffne ein Terminal
In den meisten Fällen kann es mit STR + ALT + T
geöffnet werden.
Erstelle einen neuen SSH-Key
ssh-keygen -t ed25519 -C "DEINE@EMAIL.DE"
# Falls dein System dafür zu alt ist:
# ssh-keygen -t rsa -b 4096 -C "DEINE@EMAIL.DE"
Eine Passphrase ist das Passwort, welches du benötigst, um den SSH-Schlüssel verwenden zu können (es reicht ein schwaches Passwort da nur System intern)
Starte den SSH-Agent im Hintergrund
eval "$(ssh-agent -s)"
Füge deinem SSH-Key deine eigene Identität hinzu (id_ab12345 → der Dateiname ist bei jedem System anders)
ssh-add ~/.ssh/id_ab12345
Installiere xclip
Das Programm xclip wird nur verwendet, um den Inhalt des Public-Keys in den Zwischenspeicher zu laden. Solltest du deswegen kein extra Programm verwenden wollen, kannst du dafür auch einen Editor verwenden. In der GitHub Dokumentation wird jedoch xclip verwendet, deswegen verwende ich es auch hier.
sudo apt-get install xclip
Kopiere den Public-Key in den Zwischenspeicher
(id_ab12345 → der Dateiname ist bei jedem System anders)
xclip -selection clipboard < ~/.ssh/id_ab12345.pub
Öffne die Git-Bash
Die Git-Bash, eine bunte Eingabekonsole, ist bei Windows über die Windows Suche auffindbar. Keine Sorge, du musst lediglich die folgenden Befehle eingeben, nichts wovor man Angst haben müsste.
Erstelle einen SSH-Key
ssh-keygen -t ed25519 -C "DEINE@EMAIL.DE"
# Falls dein System dafür zu alt ist:
# ssh-keygen -t rsa -b 4096 -C ""DEINE@EMAIL.DE"
Eine Passphrase ist das Passwort, welches du benötigst, um den SSH-Schlüssel verwenden zu können (es reicht ein schwaches Passwort, da es nur Systemintern verwendet wird).
Starte den SSH-Agent im Hintergrund
eval $(ssh-agent -s)
Füge deinem Key deine Identität hinzu
(id_ab12345 → der Dateiname ist bei jedem System anders)
ssh-add ~/.ssh/id_ab12345
Kopiere den Inhalt des Public-Key in den Zwischenspeicher
(id_ab12345 → der Dateiname ist bei jedem System anders)
clip < ~/.ssh/id_ab12345.pub
Öffne ein Terminal
cmd + space
und "Terminal" eingeben
Erstelle einen SSH-Key
ssh-keygen -t ed25519 -C "DEINE@EMAIL.DE"
# Falls dein System dafür zu alt ist:
# ssh-keygen -t rsa -b 4096 -C "DEINE@EMAIL.DE"
Starte den SSH-Agent im Hintergrund
ssh-agent -s
Füge dem SSH-Key deine Identität hinzu
(id_ab12345 → der Dateiname ist bei jedem System anders)
ssh-add -K ~/.ssh/id_ab12345
Kopiere den Public-Key in den Zwischenspeicher
(id_ab12345 → der Dateiname ist bei jedem System anders)
pbcopy < ~/.ssh/id_ab12345.pub
Öffne im Browser https://github.com/settings/keys
Zum Hinzufügen eines neuen Schlüssels, klicke oben rechts auf New SSH key
. Es sollte sich folgendes Fenster öffnen:
Der Titel ist der Name des SSH-Keys, wie er später in deinem Interface stehen soll. In die "Key" Sektion fügst du den Text aus der Zwischenablage ein. Klicke anschließend auf Add SSH key
. Sollten keine Fehlermeldungen auftreten, ist dein SSH-Key erfolgreich eingerichtet und du kannst damit fortfahren, deine Repositorien über SSH klonen.
Zunächst musst du prüfen, welche Remote Verbindungen dein Repository hat.
git remote -v
# Beispiel
uvulpos@Timvpos:~/Desktop/(..)/timriedl.com$ git remote -v
origin https://github.com/uvulpos/timriedl.com.git (fetch)
origin https://github.com/uvulpos/timriedl.com.git (push)
uvulpos@Timvpos:~/Desktop/(...)/timriedl.com$
Im aktuellen Beispiel sehe ich zwei Verbindungen: fetch
und push
. Beide laufen aktuell über HTTPS und hören auf den Namen origin
. Um diese auf Git zu ändern, muss die Quelle für origin
neu gesetzt werden. Gehe dazu auf dein Repository, klicke auf "clone", wähle SSH aus und kopiere die Adresse.
Um die Quelle zu ändern, setze die Remote URL der Quelle auf die kopierte Adresse.
# git remote set-url QUELLEN_NAME QUELLEN_ADRESSE
git remote set-url origin git@github.com:uvulpos/timriedl.com.git
Nachdem du nun die Quelle geändert hast, kannst du diese nochmals überprüfen. Lass dir dazu die Quellen anzeigen:
git remote -v
uvulpos@Timvpos:~/Desktop/(...)/timriedl.com$ git remote -v
origin git@github.com:uvulpos/timriedl.com.git (fetch)
origin git@github.com:uvulpos/timriedl.com.git (push)
uvulpos@Timvpos:~/Desktop/(...)/timriedl.com$
Wenn du nun das erste Mal deinen SSH-Key verwenden möchtest, musst du noch dem Fingerabdruck von GitHub zustimmen. Hast du das getan, wird dein Code ohne weitere Authentifizierung gepusht.
Beim zweiten Mal ist das jedoch nicht mehr notwendig und es wird sofort synchronisiert.
Ich habe bis jetzt immer einen speziellen Schlüssel zum Pushen meiner Repositories verwendet, welchen ich in meinem Passwortmanager gespeichert habe, da ich die 2 Faktor Authentifizierung bei GitHub aktiviert habe. Doch nun muss ich diesen nicht mehr nach jedem Push eingeben. Unter Windows wird der Key zwar in Windows gecached, jedoch muss dieser nach jedem Neustart neu eingegeben werden und, falls man diesen falsch eingibt, kann es auch mal länger dauern, bis man herausfindet, wie man den Key aus dem Cache löscht. Diese Probleme gehören nun der Vergangenheit an.
Hinterlasse mir gerne einen Kommentar zum Artikel und wie er dir weitergeholfen hat beziehungsweise, was dir helfen würde das Thema besser zu verstehen. Oder hast du einen Fehler entdeckt, den ich korrigieren sollte? Schreibe mir auch dazu gerne ein Feedback!
Es sind noch keine Kommentare vorhanden? Sei der/die Erste und verfasse einen Kommentar zum Artikel "Anleitung zur Verwendung von SSH-Keys mit Git"!