SSH-Key für GitHub-Repositories einrichten

Der Zugriff auf ein GitHub-Repository funktioniert zwar mit Nutzername und Passwort, deutlich einfacher ist es aber per SSH-Key.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 5 Min.
Von
  • Isabelle Bauer
Inhaltsverzeichnis

Sie können Ihr GitHub-Repository aus dem Terminal nutzen, ohne ständig Nutzername und Passwort einzugeben. Wir zeigen Ihnen im Folgenden, wie Sie einen SSH-Schlüssel für die passwortlose Anmeldung einrichten.

In der Regel werden Sie anfangs auf die "Standard-Art" auf Ihr GitHub-Repository zugreifen: Sie klonen den HTTPS-Link und geben dann beim Hochladen/Pushen von Änderungen Nutzername und Passwort ein. Wenn Sie häufig pushen, ist das eher lästig.

Wenn Sie stattdessen mit Schlüsseln arbeiten wollen, klonen Sie das Repository über den alternativen SSH-Link und die Authentifizierung übernimmt dann ein Schlüsselpaar. Das Schlüsselpaar aus privatem/geheimem und öffentlichem Schlüssel erstellen Sie lokal, der öffentliche Schlüssel wird bei GitHub hinterlegt. Mit solchen "Deploy-Schlüsseln" können Nutzer private Repositories ohne Passworteingabe klonen/deployen. Allerdings dürfen Sie den Deploy-Keys auch Schreibrechte verpassen und sich damit einen einfacheren Workflow einrichten.

Zunächst sollten Sie prüfen, ob nicht vielleicht schon SSH-Schlüssel existieren. Das erledigt im Terminal der Befehl "ls -al ~/.ssh", denn die Schlüssel liegen einfach in dem versteckten SSH-Ordner in Ihrem Nutzerverzeichnis. Die häufigste hier zu findende Namenskombination ist "id_rsa" für den privaten und "id_rsa.pub" für den öffentlichen Schlüssel.

Erstellen Sie nun ein neues Schlüsselpaar mit folgendem Befehl:

ssh-keygen -t rsa -b 4096 -C "meine_adresse@example.com"

"rsa 4096" bestimmt dabei die Verschlüsselung, die Authentifizierung erfolgt über Ihre bei GitHub angegebene Mailadresse. Folgen Sie nun den Anweisungen im Terminal: Zunächst geben Sie einen Namen für die Schlüssel an. Am besten belassen Sie es bei dem Pfad "~/.ssh" und dem Namensmuster mit "rsa.pub" darin, um es übersichtlich zu halten. Anschließend vergeben Sie ein beliebiges Passwort. Allerdings sind beide Schritte optional, Sie können auch den Standarddateinamen verwenden und auf ein Passwort verzichten, um ein wenig Arbeit zu sparen.

Im Beispiel wurden Schlüssel mit den Namen "id_rsa_github" und "id_rsa_github.pub" erstellt und mit einem Passwort gesichert. Zunächst fügen Sie die neue Identität dem Authentifizierungsagenten hinzu:

ssh-add ~/.ssh/id_rsa_github

Nun wird einmalig das Passwort abgefragt, bei zukünftigen Aktualisierungen übernimmt entsprechend der Agent die Authentifizierung. Standardmäßig nutzt Git den Schlüssel mit dem Standardnamen "id_rsa". Wenn Sie einen anderen Schlüssel verwenden wollen, legen Sie die Datei "~/.ssh/config" an und setzen Sie Lese- und Schreibrecht für den Dateibesitzer. Bei der Gelegenheit können Sie aus Sicherheitsgründen noch Nur-Lesen-Zugriff für den Admin auf den privaten Schlüssel setzen:

chmod 600 ~/.ssh/config
chmod 400 ~/.ssh/id_rsa_github

Öffnen Sie die config-Datei und fügen Sie folgenden Inhalt ein:

HostName github.com
IdentityFile ~/.ssh/id_rsa_github
User git

Hier müssen Sie also lediglich die erstellte private Schlüsseldatei, genauer gesagt die Identität, für den Host github.com festlegen.

Auf Ihrem lokalen Rechner ist nun alles getan, Sie müssen GitHub nur noch den öffentlichen Schlüssel mitteilen. Öffnen Sie dazu im Browser das gewünschte Repository und rufen Sie dort "Settings/Deploy keys" auf. Über "Add deploy key" legen Sie einen neuen Schlüssel an. Den Namen können Sie frei wählen und in das "Key"-Feld kopieren Sie den Inhalt der Datei des öffentlichen Schlüssels, also "~/.ssh/id_rsa_github.pub". Der Inhalt des privaten Schlüssels wird niemals irgendwo eingegeben, achten Sie also auf die richtigen Dateien! Anschließend speichern Sie den Deploy-Schlüssel und landen wieder in der Übersicht mit Ihrem neuen Schlüssel.

Im Terminal können Sie nun Ihr Repository über den SSH-Link auf der Repo-Startseite klonen. Sofern das Repo schon lokal vorhanden ist, testen Sie dies einfach mit einem kurzen "git pull". Wenn alles gut gelaufen ist, bekommen Sie die Aktualisierungen nun ohne weitere Anmeldungen. Wenn Sie nun nochmals GitHub im Browser aufsuchen und die Deploy-Keys-Seite aufrufen, sehen Sie auch eine Statusmeldung, wann der Schlüssel zuletzt benutzt wurde. Und natürlich dürfen Sie auch mehrere Schlüssel für mehrere Nutzer oder Rechner anlegen.

Tipp: Wer an Ihren Rechner kommt, kann bei einem passwortlos eingerichteten SSH-Schlüssel natürlich auch auf die damit verknüpften Repositories (schreibend) zugreifen. Sie können sich hier aber durchaus mit einem simplen Passwort behelfen. Zum einen sparen Sie sich zumindest die Angabe des Nutzernamens. Zum anderen: Wenn Sie längere Zeit vom Rechner entfernt sind, werden Sie ihn sowieso sperren. Wenn der Rechner mal geklaut wird, können Sie ganz einfach die Deploy-Keys in der GitHub-Oberfläche entfernen. Das Hauptrisiko liegt also tendenziell darin, dass jemand während kurzer Abwesenheit (Kaffee, Toilette, im Nebenbüro etc.) Zugriff bekommt, weil Sie den Rechner eben nicht gesperrt haben. Für ein paar Minuten tut es aber auch ein simples Passwort, das fix getippt ist, denn Passwörter zu knacken benötigt einfach Zeit. Auf die ersten Standardversuche eines jeden Hackers (oder mittlerweile auch TV-Krimi-Zuschauers...) sollten Sie dennoch verzichten: Weder "123456" noch "Passwort" gehen überhaupt als Passwörter durch. Wie Sie sichere Passwörter finden, lesen Sie in diesem Beitrag.

Mehr Infos

(isba)