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.