Arbeiten mit mehreren GitHub-Accounts

Mit Beginn meines Praktikums hatte ich plötzlich zwei GitHub-Accounts. Da stellte sich die Frage: wie kann ich erreichen, dass ich parallel an meinen privaten Repositories und denen der Firma arbeiten kann und beim pushen und pullen jeweils die richtige Remote-Adresse benutzt wird?
Die Lösung: für jedes Repository einen eigenen SSH-Key verwenden und in einer Konfigurationsdatei die nötigen Parameter definieren.
Dafür habe ich hier einmal die Abfolge der Schritte festgehalten und hoffe, dass es vielleicht hilft, die mühselige Recherche zu verkürzen.

Schritt 1: Generierung von SSH-Schlüsseln

Die Befehlseingaben in der CMD und bash sind weitestgehend gleich. Bei Windows ist der Slash durch Backslash zu ersetzen.

$ ssh-keygen -t ed25519

Eingabeaufforderungen:

  • Dateinamen für den Schlüssel festlegen (frei wählbar)
  • Passwort eingeben (nicht zwingend erforderlich, kann man leer lassen)

Nach Abschluss dieses Schritts werden die Schlüssel generiert, und es erscheint ein Fingerabdruck zusammen mit einem zufälligen Kunstbild.

Schritt 2: Hinzufügen von Schlüsseln zum SSH-Agent

Auf Windows muss möglicherweise der SSH-Agent installiert werden. In der PowerShell müssen dazu folgende Befehle als Administrator ausgeführt werden:

PS C:\Windows\system32> Get-Service ssh-agent | Set-Service -StartupType Automatic -PassThru | Start-Service
PS C:\Windows\system32> start-ssh-agent.cmd

Anschließend müssen die privaten Schlüssel zum SSH-Agent hinzufügt werden:

$ ssh-add ~/.ssh/id_erik-berndt
$ ssh-add ~/.ssh/id_rsa

Schritt 3: Hinzufügen von öffentlichen Schlüsseln zu GitHub

Öffentlichen Schlüssel mit cat oder type (Windows) anzeigen lassen und kopieren:

$ cat ~/.ssh/id_erik-berndt.pub

Dann beim jeweiligen GitHub-Account anmelden und unter

Settings (global) -> SSH and GPG Keys -> New SSH key (grüner Button)

den öffentlichen Schlüssel mit einem aussagekräftigen Namen eintragen.

Schritt 4: Konfiguration der SSH-Konfigurationsdatei

Falls keine SSH-Konfigurationsdatei existiert, muss sie erstellt werden. Einträge für jedes GitHub-Konto haben dann folgende Syntax:

# ~/.ssh/config
...
Host github.com
  HostName github.com
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/id_rsa

Host erik-berndt
  HostName github.com
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/id_erik-berndt
...

Schritt 5: Testen der Verbindung

Sicherstellen, dass GitHub zu den bekannten Hosts hinzugefügt ist:

$ ssh-keyscan github.com >> ~/.ssh/known_hosts

Die Verbindung zu GitHub testen:

$ ssh -T git@github.com
$ ssh -T git@erik-berndt

Bei erfolgreichem Abschluss wird eine Willkommensnachricht ausgegeben, die eine erfolgreiche Authentifizierung bestätigt.

Schritt 6: Klonen von Repositories

Nun kann man Repositories mithilfe der konfigurierten Host-Aliasnamen klonen:

$ git clone git@github.com:pytherik/<repository_name>.git     # Standardkonto
$ git clone git@erik-berndt:erik-berndt/<repository_name>.git # anderes Konto

Das sorgt dafür, dass der remote Eintrag im lokalen Repository auf den richtigen Account zeigt:

$ git remote -v    # remote Einstellungen anzeigen

Mit diesen Schritten ist man bereit, mit seinen GitHub-Repositories unter Verwendung von SSH-Schlüsseln zu arbeiten.

Happy hacking!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert