Ein Rechner; zwei GitHub-Accounts

Da es vorkommt, dass ich meinen „richtigen“ Mac auch mal für berufliche Zwecke nutze, wenn mich das kleine Notebook anstinkt, benötige ich auch verschiedene SSH Schlüssel für verschiedene GitHub Accounts auf dem gleichen Rechner.

Dazu habe ich zwei Schlüssel. Nenne wir sie einfach id_home und id_work und gehen davon aus, dass die beiden öffentlichen Schlüssel bei dem jeweils passenden Account auf GitHub hinterlegt sind.

In der ~/.git/config lege ich zwei Host Einträge an, die zu den Schlüsseln passen:

Host github.com_home
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_home

Host github.com_work
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_work

Mit dem Befehl ssh -T git@github.com_home bzw. ssh -T git@github.com_work kann der Login geprüft werden. Die Ausgabe sollte im Idealfall wie folgt aussehen:

Hi {username}! 
You've successfully authenticated, but GitHub does not provide shell access.

In der .git/config der Projekte benutze ich dann den passenden Host in der Repository URL damit der richtige Schlüssel für die Authentifizierung benutzt wird.

Bei einem „Home“-Projekt sieht die URL dann so aus:

[remote "origin"]
    url = git@github.com_home:{usename}/{project}.git

Wenn ein Repo frisch eingerichtet wird, kann an das auch direkt beim Verbinden machen:

git remote set-url origin git@github.com_home:{usename}/{project}.git

Um es mir einfacher zu machen, habe ich schlußendlich für die „Home“-Projekte den Host einfach bei github.com belassen und nur den Host für Work entsprechend benannt, da ich auf dem Rechner wesentlich mehr „Home“-Projekte als „Work“-Projekte habe.

Ich weiss nicht, ob es eine einfachere Möglichkeit gibt, den Zugriff mit bestimmten Accounts auf Repos zu steuern. Aber diese Lösung funktioniert ganz gut.