Työskennellessäni nykyisellä työpaikallani minua pyydettiin luomaan uusi GitHub-tili, ennen kuin voin olla yrityksen GitHub-organisaation jäsen ja päästä käsiksi kaikkiin yksityisiin projektivarastoihin.
Vasta kun jätin työpaikan kannettavan tietokoneen kaappiini, mutta minun piti silti saada jotain tehtyä, tunsin tarvetta hallita molempia GitHub-tilejäni henkilökohtaisella kannettavallani (kuka tarvitsee työn ja yksityiselämän tasapainoa?)
Yksi monimutkaisemmaksi asian tekee se, että projekti, jonka parissa työskentelen, viittaa muihin yksityisiin arkistoihin package.json
:n riippuvuudet-lohkossaan ja tarvitsee pääsyn niihin osoitteessa npm install
, joka oletusarvoisesti käyttää henkilökohtaisen GitHub-tilini ssh-avainta.
Joidenkin kokeilujen ja epäonnistumisten jälkeen sain sen lopulta toimimaan näin:
Luo uusi ssh-avain ja lisää se työn GitHub-tiliin
$ ssh-keygen -t rsa -b 4096 -C "my_work_email@my_company.com"
Sitä, että uusi ssh-avain on nimeltään ”work_rsa”, kopioi nyt äsken luodun julkisen avaintiedoston sisältö (work_rsa.pub tässä esimerkissä) ja liitä se work GitHub-tilin asetussivulle GitHubin ohjesivulla kuvatulla tavalla.
Muuta ssh:n konfigurointitiedostoa ( ~/.ssh/config)
Avaa konfigurointitiedosto tekstieditorilla (luo se, jos sellaista ei ole ~/.ssh-kansiossa vielä ole) ja lisää siihen seuraava:
# 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
Kloonaa työprojektin repo (hieman eri osoitteella)
Kloonataksemme työprojektin repon käyttäen uutta ssh-avainta meidän täytyy hieman muokata repon ssh-osoitetta. Host-url:n on vastattava edellisen vaiheen ssh-konfigurointitiedostossa määriteltyä Hostia, eli jos osoitteessa on github.com
, korvaa se github.com-work
.
Et esim, seuraavalla yksityisen repon ssh-osoitteella, jonka saamme GitHubista:
[email protected]:/.git
Meidän täytyy muokata sen osoitetta näin, ennen kuin voimme git clone
käyttää sitä:
[email protected]:/.git
$ git clone [email protected]:/.git
Muuttaa pakettia.json asentaaksesi yksityisen repon riippuvuudet
Lokaalisti kloonatusta projektista etsi sen paketista yksityisen repon riippuvuudet.json ja tee sama muutos niiden repo-osoitteeseen kuin vaiheessa 3 (en committaisi näitä muutoksia, koska se rikkoo kaiken muille ihmisille, jotka myös työskentelevät tämän projektin parissa):
"dependencies": {
"private-module": "git+ssh://[email protected]/.git
...
}
*Voi olla tarpeen tehdä ensin manuaalinen asennus yhdelle yksityisistä moduuleista terminaalissa:
$ npm install git+ssh://[email protected]/
Siten yksityiset repot tunnistetaan ssh:ssä known_hosts
ja niitä voidaan käyttää, kun projektin riippuvuussuhteita asennetaan npm:llä.