La intrarea în actualul meu loc de muncă, mi s-a cerut să creez un nou cont GitHub înainte de a putea fi membru al organizației GitHub a companiei și, la rândul meu, să obțin acces la toate depozitele de proiecte private.
Atunci când am lăsat laptopul de lucru în dulapul meu, dar tot trebuia să fac ceva, am simțit nevoia să gestionez ambele conturi GitHub pe laptopul meu personal (cine are nevoie de un echilibru între viața profesională și cea privată?)
Pentru a face lucrurile și mai complicate, proiectul la care lucrez face referire la alte depozite private în blocul său package.json
‘s dependencies și trebuie să le acceseze la npm install
, ceea ce înseamnă, în mod implicit, utilizarea cheii ssh a contului meu personal GitHub.
După câteva încercări și eșecuri, iată cum am reușit în cele din urmă să fac să funcționeze:
Creează o nouă cheie ssh și adaugă-o la contul GitHub de lucru
$ ssh-keygen -t rsa -b 4096 -C "my_work_email@my_company.com"
Să spunem că noua cheie ssh a fost numită „work_rsa”, acum copiază conținutul fișierului de cheie publică nou generat (work_rsa.pub în acest exemplu) și lipiți-l în pagina de setări a contului GitHub work, așa cum este descris în pagina de ajutor GitHub.
Modificați fișierul de configurare ssh ( ~/.ssh/config)
Deschideți fișierul de configurare într-un editor de text (creați-l dacă nu există unul în folderul ~/.ssh încă) și adăugați-i următoarele:
# 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
Clonați repo-ul proiectului de lucru (cu o adresă ușor diferită)
Pentru a clona repo-ul proiectului de lucru folosind noua cheie ssh trebuie să modificăm puțin adresa ssh a repo-ului. Adresa URL a gazdei trebuie să se potrivească cu gazda definită în fișierul de configurare ssh de la ultimul pas, și anume, acolo unde în adresă există github.com
, înlocuiți-o cu github.com-work
.
De exemplu, cu următoarea adresă ssh a repo-ului privat pe care o obținem de pe GitHub:
[email protected]:/.git
Trebuie să-i modificăm adresa în felul următor înainte de a o git clone
putea git clone
:
[email protected]:/.git
$ git clone [email protected]:/.git
Modificați pachetul.json pentru a instala dependențele repo-ului privat
În proiectul care a clonat local, găsiți dependențele repo-ului privat în pachetul său.json și faceți aceeași modificare la adresa repo-ului lor ca la pasul 3 (nu aș comite aceste modificări deoarece strică totul pentru alte persoane care lucrează de asemenea la acest proiect):
"dependencies": {
"private-module": "git+ssh://[email protected]/.git
...
}
*Poate fi necesar să faceți mai întâi o instalare manuală pentru unul dintre modulele private în terminal:
$ npm install git+ssh://[email protected]/
Pentru ca repo-urile private să fie recunoscute în ssh known_hosts
și să poată fi accesate în timpul instalării npm a dependențelor proiectului.