Toen ik bij mijn huidige werkplek kwam, werd me gevraagd om een nieuw GitHub account aan te maken voordat ik lid kon worden van de GitHub organisatie van het bedrijf en op mijn beurt toegang kon krijgen tot alle privé project repositories.
Pas toen ik de werklaptop in mijn kluisje achterliet, maar nog steeds iets gedaan moest krijgen, voelde ik de behoefte om mijn beide GitHub-accounts op mijn persoonlijke laptop te beheren (wie heeft werk-privébalans nodig?)
Om het nog ingewikkelder te maken, verwijst het project waar ik aan werk naar andere private repositories in zijn package.json
’s dependencies block en heeft toegang nodig op npm install
, wat standaard is om de ssh-key van mijn persoonlijke GitHub account te gebruiken.
Na wat proberen en mislukken, is dit hoe ik het eindelijk aan de praat kreeg:
Maak een nieuwe ssh-sleutel aan en voeg die toe aan het werk GitHub account
$ ssh-keygen -t rsa -b 4096 -C "my_work_email@my_company.com"
Stel dat de nieuwe ssh-sleutel de naam “work_rsa” kreeg, kopieer nu de inhoud van het nieuw gegenereerde publieke sleutel bestand (work_rsa.pub in dit voorbeeld) en plak het in de instellingenpagina van het werk GitHub account zoals beschreven in de GitHub help pagina.
Bewerk het ssh config bestand ( ~/.ssh/config)
Open het config bestand in een tekst editor (maak het als er nog geen is in de ~/.ssh map staat) en voeg het volgende toe:
# 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
Kloon de repo van het werkproject (met een iets ander adres)
Om de repo van het werkproject te klonen met de nieuwe ssh-sleutel moeten we het ssh-adres van de repo een beetje aanpassen. De host url moet overeenkomen met de Host gedefinieerd in het ssh config bestand van de laatste stap, namelijk, waar in het adres github.com
staat, vervang het door github.com-work
.
E.g, met het volgende private repo ssh adres dat we van GitHub krijgen:
[email protected]:/.git
We moeten het adres als volgt aanpassen voordat we het kunnen git clone
:
[email protected]:/.git
$ git clone [email protected]:/.git
Modify the package.json om de private repo dependencies te installeren
In het project dat lokaal gekloond is, zoek de private repo dependencies in zijn package.json en doe dezelfde wijziging aan hun repo-adres als in stap 3 (ik zou deze wijzigingen niet vastleggen omdat het alles breekt voor andere mensen die ook aan dit project werken):
"dependencies": {
"private-module": "git+ssh://[email protected]/.git
...
}
*Het kan nodig zijn om eerst een handmatige installatie te doen voor een van de private modules in terminal:
$ npm install git+ssh://[email protected]/
Om ervoor te zorgen dat de private repo’s worden herkend in de ssh known_hosts
en kunnen worden benaderd tijdens de npm installatie van de project afhankelijkheden.