Als ich an meinem derzeitigen Arbeitsplatz anfing, wurde ich gebeten, ein neues GitHub-Konto zu erstellen, bevor ich Mitglied der GitHub-Organisation des Unternehmens werden kann und im Gegenzug Zugriff auf alle privaten Projekt-Repositories erhalte.
Erst als ich den Arbeitslaptop in meinem Spind stehen ließ, aber noch etwas erledigen musste, hatte ich das Bedürfnis, meine beiden GitHub-Konten auf meinem privaten Laptop zu verwalten (wer braucht schon ein Gleichgewicht zwischen Arbeit und Privatleben?)
Um die Dinge noch komplizierter zu machen, verweist das Projekt, an dem ich arbeite, in seinem package.json
Abhängigkeitsblock auf andere private Repositories und muss auf diese unter npm install
zugreifen, was standardmäßig mit dem ssh-Schlüssel meines persönlichen GitHub-Kontos geschieht.
Nach einigen Versuchen und Fehlschlägen habe ich es schließlich so hinbekommen:
Erstelle einen neuen ssh-Schlüssel und füge ihn zum GitHub-Arbeitskonto hinzu
$ ssh-keygen -t rsa -b 4096 -C "my_work_email@my_company.com"
Sagen wir, der neue ssh-Schlüssel wurde „work_rsa“ genannt, nun kopiere den Inhalt der neu generierten öffentlichen Schlüsseldatei (work_rsa.pub in diesem Beispiel) und fügen Sie ihn in die Einstellungsseite des GitHub-Kontos „work“ ein, wie auf der GitHub-Hilfeseite beschrieben.
Ändern Sie die ssh-Konfigurationsdatei ( ~/.ssh/config)
Öffnen Sie die Konfigurationsdatei in einem Texteditor (erstellen Sie ihn, wenn sich noch keiner im Ordner ~/.ssh-Ordner) und fügen Sie Folgendes hinzu:
# Personal GitHub account
Host github.com
HostName github.com
User git
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa# Work GitHub account
Host github.com-work
HostName github.com
User git
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/work_rsa
Klonen Sie das Arbeitsprojekt-Repository (mit einer leicht veränderten Adresse)
Um das Arbeitsprojekt-Repository mit dem neuen ssh-Schlüssel zu klonen, müssen wir die ssh-Adresse des Repositorys ein wenig anpassen. Die Host-URL muss mit dem in der ssh-Konfigurationsdatei aus dem letzten Schritt definierten Host übereinstimmen, d.h. wo in der Adresse github.com
steht, ersetzen Sie diese durch github.com-work
.
Z.B., mit der folgenden privaten Repo-SH-Adresse, die wir von GitHub erhalten:
[email protected]:/.git
Wir müssen die Adresse wie folgt ändern, bevor wir sie git clone
verwenden können:
[email protected]:/.git
$ git clone [email protected]:/.git
Ändern Sie die package.json, um die privaten Repo-Abhängigkeiten zu installieren
In dem Projekt, das lokal geklont wurde, finden Sie die privaten Repo-Abhängigkeiten in dessen package.json und führe die gleiche Änderung an der Adresse des privaten Repos wie in Schritt 3 durch (ich würde diese Änderungen nicht übertragen, da dies alles für andere Leute, die auch an diesem Projekt arbeiten, kaputt macht):
"dependencies": {
"private-module": "git+ssh://[email protected]/.git
...
}
*Es könnte notwendig sein, zuerst eine manuelle Installation für eines der privaten Module im Terminal durchzuführen:
$ npm install git+ssh://[email protected]/
So dass die privaten Repos in der ssh known_hosts
erkannt werden und während der npm-Installation der Projektabhängigkeiten zugegriffen werden kann.