Wie richte ich die passwortlose Authentifizierung für das private GitHub-Repository ein?

Passwortlose Authentifizierung für private GitHub Repositories

Für Entwickler wie uns ist es mühsam und lästig, ständig dieselben Aufgaben zu wiederholen. Geht es Ihnen nicht auch so?

Eine dieser repetitiven Aufgaben ist die Interaktion mit einem privaten GitHub-Repository. Was bedeutet das? Sie kennen das Problem und suchen nach Lösungen, weshalb Sie auf diesen Artikel gestoßen sind. Ihre Suche wird nach dem Lesen dieses Artikels ein Ende haben.

In diesem Artikel erklären wir, wie Sie ohne Passwort auf ein privates GitHub-Repository zugreifen können. Fangen wir gleich an.

Es gibt im Wesentlichen zwei Methoden, um auf GitHub-Repositories zuzugreifen: HTTPS und SSH. Viele von Ihnen nutzen wahrscheinlich HTTPS, aber Sie werden feststellen, dass dies nicht die effizienteste Methode ist, um private Repositories zu klonen.

Dieser Zugriff umfasst Aktionen wie Klonen, Pushen, Pullen und alles, was mit der Aktualisierung unseres Repositorys auf dem Remote-Server zu tun hat.

Bei öffentlichen Repositories gibt es keine Probleme, aber der Zugriff auf private Repositories erfordert eine Authentifizierung. Hierfür gibt es verschiedene Möglichkeiten.

Beginnen wir mit der bekanntesten Methode…

Verwendung von HTTPS

Sie sind vermutlich mit der HTTPS-Methode vertraut und suchen deshalb nach Alternativen. Schauen wir uns kurz an, wie Sie damit auf ein privates Repository zugreifen können.

  • Kopieren Sie den Link Ihres privaten Repositorys.

Privates GitHub-Repository

  • Öffnen Sie das Terminal oder die Eingabeaufforderung auf Ihrem Computer.
  • Fügen Sie den Befehl `git clone link` ein, um das private Repository zu klonen.
  • Ersetzen Sie `link` mit Ihrem privaten Repository-Link.
  • Sie werden aufgefordert, sich zu authentifizieren. Geben Sie also Ihre GitHub-Zugangsdaten ein.
  • Zuerst werden Sie nach Ihrem GitHub-Benutzernamen gefragt. Geben Sie ihn ein und bestätigen Sie mit der Eingabetaste.

Authentifizierung – Benutzername

  • Als Nächstes werden Sie aufgefordert, Ihr Passwort einzugeben. Geben Sie Ihr GitHub-Passwort ein und bestätigen Sie mit der Eingabetaste.

Das war es. Wir haben das private Repository erfolgreich über HTTPS geklont. Nehmen Sie nun Änderungen vor, committen Sie diese und pushen Sie sie auf den Remote-Server.

Was ist Ihnen aufgefallen?

Sie werden erneut zur Authentifizierung aufgefordert.

Ist es nicht ermüdend und zeitraubend, bei jeder Interaktion mit dem privaten Repository immer wieder die Zugangsdaten einzugeben?

Ja, das ist es.

Die ständige Eingabe von GitHub-Zugangsdaten beeinträchtigt den Arbeitsablauf erheblich. Es gibt mehrere Methoden, um dieses Problem zu lösen. Die effektivste ist die Verwendung von SSH. Wir werden jedoch auch andere Methoden beleuchten.

Die .git-Konfiguration

Alle Versionsdaten unserer Repositories werden im Ordner `.git` gespeichert. Dieser Ordner ist versteckt und enthält eine Konfigurationsdatei, mit der wir Einstellungen anpassen können. Es ist jedoch allgemein nicht empfehlenswert, diese Datei direkt zu bearbeiten.

Wir können ein privates Repository klonen, indem wir den Benutzernamen und das Passwort direkt in die Repository-URL einfügen:

git clone https://<strong>username:password</strong>@github.com/<strong>username</strong>/<strong>repository_name</strong>.git

Ersetzen Sie den Benutzernamen, das Passwort und den Repository-Namen durch Ihre korrekten Informationen. Da wir unsere Zugangsdaten in die URL integriert haben, wird keine Authentifizierung mehr verlangt.

Um die wiederholte Authentifizierungsanfrage zu umgehen, werden wir die Repository-Konfiguration mit der oben beschriebenen Methode ändern. Sehen wir uns die Schritte dazu an:

  • Öffnen Sie den `.git`-Ordner in Ihrem geklonten Repository.

  • Dort finden Sie eine Datei namens `config`. Öffnen Sie diese mit einem Texteditor Ihrer Wahl.
  • In dieser Datei finden Sie eine Zeile, die Ihren Repository-Link enthält.

  • Ersetzen Sie die URL, indem Sie den Benutzernamen und das Passwort wie oben gezeigt einfügen.

Nehmen Sie nun wieder Änderungen im Repository vor, committen Sie diese und pushen Sie sie.

Ist Ihnen etwas aufgefallen?

Sie sollten diesmal nicht nach Ihren GitHub-Zugangsdaten gefragt werden. Wir haben also das Problem durch Bearbeiten unserer Repository-Einstellung gelöst.

Wie Sie vielleicht bemerkt haben, ist diese Methode nicht sicher, da unsere Zugangsdaten offengelegt werden. Zudem funktioniert diese Methode nicht, wenn Ihr GitHub-Passwort das Zeichen `@` enthält.

Da diese Methode einige kritische Nachteile hat, ignorieren wir sie und fahren mit der nächsten fort.

Credential Helper

Mit `credential.helper` können wir unsere Zugangsdaten dauerhaft in der Datei `~/.git-credentials` speichern.

Die Zugangsdaten werden beim ersten Eingeben gespeichert. Wenn wir danach auf das private Repository zugreifen, wird keine erneute Eingabe verlangt, da die Daten in der Datei `~/git-credentials` hinterlegt sind. Dies ist also eine weitere Möglichkeit, unser Problem zu lösen. Sehen wir uns diese Methode mit genauen Schritten an:

  • Zuerst müssen wir die Speicherung der Zugangsdaten aktivieren. Verwenden Sie hierfür den Befehl `git config credential.helper store`.
  • Versuchen Sie nach der Aktivierung, mit Ihrem Benutzernamen und Ihrem Passwort auf das private Repository zuzugreifen.
  • Sobald Sie Ihren Benutzernamen und Ihr Passwort eingegeben haben, werden Ihre GitHub-Zugangsdaten in der Datei `~/.git-credentials` gespeichert.

Wiederholen Sie nun den gleichen Vorgang, um zu überprüfen, ob alles funktioniert. Nehmen Sie Änderungen vor, committen Sie diese und pushen Sie sie. Wenn Sie die vorherigen Schritte korrekt befolgt haben, werden Sie nicht nach Zugangsdaten gefragt.

Es läuft gut…

Was ist, wenn Sie die Zugangsdaten nicht für immer, sondern nur für 4 Stunden speichern möchten?

Der `credential.helper` bietet eine Möglichkeit, Zugangsdaten für eine bestimmte Zeit zwischenzuspeichern. Anstelle von `store` verwenden wir `cache`, um die Zugangsdaten zeitlich begrenzt zu speichern.

Standardmäßig speichert der Cache die Zugangsdaten für 15 Minuten. Nach Ablauf dieser Zeit fragt Git erneut nach den Zugangsdaten. Die Standardzeit kann mit folgendem Befehl geändert werden:

git config credential.helper 'cache --timeout={Zeit_in_Sekunden}'

Vergessen Sie nicht, die Zeit in Sekunden anzugeben. Sehen wir uns diese Methode in Aktion an:

  • Zuerst müssen wir die Zwischenspeicherung unserer Zugangsdaten mit dem Befehl `git config credential.helper cache` aktivieren.
  • Greifen Sie mit Ihrem Benutzernamen und Ihrem Passwort auf das private Repository zu.
  • Sobald Sie Ihren Benutzernamen und Ihr Passwort eingegeben haben, werden Ihre GitHub-Zugangsdaten für die angegebene Zeit zwischengespeichert.

Nehmen Sie nun Änderungen vor, committen Sie diese und pushen Sie sie. Auch hier werden Sie nicht nach Zugangsdaten gefragt, da diese zwischengespeichert wurden.

Wir haben Ihnen die Befehle gezeigt, um ein mit Git initialisiertes Repository zu bearbeiten. Wir können die Git-Konfiguration global für alle Projekte ändern, indem wir das Flag `–global` zu den obigen Befehlen hinzufügen.

Persönliche Zugriffstoken

Persönliche Zugriffstoken werden verwendet, um Zugriff auf die GitHub-API zu gewähren. Diese Token ähneln OAuth-Tokens. Sie können anstelle von Passwörtern für die grundlegende Git-Authentifizierung verwendet werden. Damit können wir unser Problem lösen.

Sehen wir uns an, wie es geht:

  • Melden Sie sich bei Ihrem GitHub-Konto an.
  • Gehen Sie zu den Einstellungen.

  • Wählen Sie in der linken Navigationsleiste den Punkt „Entwicklereinstellungen“ aus.

  • Klicken Sie auf „Persönliche Zugriffstoken“, um zu unserem Ziel zu gelangen. Die persönlichen Zugriffstoken werden wie folgt dargestellt.

  • Klicken Sie auf „Neues Token generieren“, um ein neues Token zu erstellen.

  • Geben Sie eine Notiz für das Token ein. Sie dient als kurze Erinnerung, wofür das Token genutzt wird.

  • Wählen Sie die Berechtigungen für das Token aus. Die Programme, die das Token verwenden, erhalten Zugriff auf alle ausgewählten Berechtigungen. Wählen Sie in unserem Fall „repo“ aus.

  • Scrollen Sie nach unten und klicken Sie auf die Schaltfläche „Token generieren“.

  • Das persönliche Zugriffstoken wird einmalig angezeigt. Sie können den Token nicht erneut einsehen. Kopieren Sie ihn und speichern Sie ihn an einem sicheren Ort, z. B. in einem Passwort-Manager.

  • Wir haben das persönliche Zugriffstoken erfolgreich erstellt.
  • Nun ist es an der Zeit, damit auf unser privates Repository zuzugreifen.
  • Ändern Sie die Repository-URL in der Datei `.git/config` zu: `https://{personal_access_token}@github.com/benutzername/repositoryname.git`, ähnlich wie in der ersten Methode.

Versuchen Sie nun, auf das private Repository zuzugreifen.

Werden Sie zur Authentifizierung aufgefordert?

Nein, Sie werden nicht zur Authentifizierung aufgefordert, solange das Token aktiv ist. Kommen wir nun zur letzten Methode, um unser Problem zu lösen.

SSH

SSH wird zur Authentifizierung verwendet. Eine ausführliche Dokumentation zu SSH finden Sie auf GitHub hier.

Das Prinzip ist einfach: Generieren Sie einen SSH-Schlüssel, fügen Sie ihn Ihrem GitHub-Konto hinzu und profitieren Sie von der passwortlosen Authentifizierung.

Sehen wir uns diese drei Schritte im Detail an:

  • Öffnen Sie das Terminal oder die Eingabeaufforderung auf Ihrem System.
  • Geben Sie den Befehl `ssh-keygen -t rsa` ein, um einen neuen SSH-Schlüssel zu generieren.
  • Sie werden nach dem Speicherort für den Schlüssel gefragt. Bestätigen Sie mit der Eingabetaste, um den Standardpfad zu verwenden. Sie können den Pfad jedoch auch nach Ihren Wünschen ändern. Wir verwenden hier den Standardpfad.

  • Jetzt müssen wir eine Passphrase eingeben, um unseren SSH-Schlüssel zu schützen. Dies ist optional.
    • Wenn wir eine Passphrase für den SSH-Schlüssel wählen, müssen wir sie bei jedem Systemstart eingeben.
    • Wenn wir keine Passphrase gewählt haben, ist dies nicht erforderlich.

  • Geben Sie die Passphrase zur Bestätigung erneut ein.

  • Schließlich wird wie folgt ein neuer SSH-Schlüssel generiert.

Wir haben erfolgreich einen neuen SSH-Schlüssel auf unserem System erstellt. Es werden zwei Dateien erstellt (die Dateinamen können abweichen, wenn Sie den Pfad geändert haben):

Nun ist es an der Zeit, die Verbindung mit Ihrem GitHub-Konto herzustellen. Hierfür müssen die Inhalte der Datei mit der Endung `.pub` in Ihr GitHub-Konto kopiert werden. In meinem Fall ist es `id_rsa.pub`.

  • Melden Sie sich bei Ihrem GitHub-Konto an.
  • Öffnen Sie die Einstellungen.

  • Klicken Sie auf „SSH- und GPG-Schlüssel“, um zu unserem Ziel zu gelangen.

  • Klicken Sie auf „Neuer SSH-Schlüssel“, um unseren neuen SSH-Schlüssel hinzuzufügen.

  • Sie werden zu folgendem Bildschirm weitergeleitet:

  • Geben Sie einen aussagekräftigen Titel für den SSH-Schlüssel an. Da jeder SSH-Schlüssel systemspezifisch ist, wählen Sie einen Titel, der Ihre Systeme widerspiegelt.
  • Kopieren Sie nach der Auswahl des Titels den Inhalt der `.pub`-Datei und fügen Sie ihn in das zweite Feld ein.

  • Klicken Sie abschließend auf „SSH-Schlüssel hinzufügen“ und bestätigen Sie den Zugriff mit Ihrem GitHub-Passwort.
  • Der neu hinzugefügte SSH-Schlüssel wird wie folgt dargestellt.

Wir haben erfolgreich unseren neu generierten SSH-Schlüssel zu GitHub hinzugefügt. Jetzt müssen wir die SSH-Verbindung authentifizieren, um später von der passwortlosen Authentifizierung zu profitieren. Verwenden Sie hierfür den folgenden Befehl im Terminal oder in der Eingabeaufforderung:

ssh -T [email protected]

Sie werden um Bestätigung gebeten. Bestätigen Sie diese. Das war’s. Wir sind fertig.

Klonen Sie nun Ihr privates Repository. Diesmal wird keine Authentifizierung mehr verlangt.

Nehmen Sie Änderungen vor, committen Sie diese und pushen Sie sie. Sie werden nicht mehr zur Authentifizierung aufgefordert. Viel Spaß damit!

Zusammenfassung

Uff! Wir haben verschiedene Methoden behandelt, um auf private Repositories zuzugreifen, ohne ständig Zugangsdaten eingeben zu müssen. Sie können jede beliebige Methode verwenden. Die übliche und bewährte Methode ist jedoch die Verwendung von SSH zur Authentifizierung.

Letztendlich hängt es von Ihren Präferenzen ab. Es gibt keine strenge Regel, die nur die SSH-Methode erlaubt. Die meisten Unternehmen verwenden jedoch die SSH-Methode zur Authentifizierung, da sie sicher ist und Zeit spart. Stellen Sie sicher, dass Ihre Zugangsdaten sicher verwahrt sind.

Viel Spaß beim Entwickeln 🙂