Da jeg tiltrådte min nuværende arbejdsplads, blev jeg bedt om at oprette en ny GitHub-konto, før jeg kan blive medlem af virksomhedens GitHub-organisation og dermed få adgang til alle de private projektrepositorier.
Det var først da jeg efterlod den bærbare computer på arbejdet i mit skab, men stadig havde brug for at få noget gjort, at jeg følte behov for at administrere begge mine GitHub-konti på min personlige bærbare computer (hvem har brug for balance mellem arbejdsliv og privatliv?)
For at gøre tingene mere komplicerede, refererer det projekt, jeg arbejder på, til andre private repositories i sin package.json
‘s dependencies block og skal få adgang til dem på npm install
, som standardmæssigt bruger min personlige GitHub-konto’s ssh-nøgle.
Efter nogle forsøg og fiaskoer er her hvordan jeg endelig fik det til at virke:
Opret en ny ssh-nøgle og tilføj den til arbejdet GitHub-konto
$ ssh-keygen -t rsa -b 4096 -C "my_work_email@my_company.com"
Sig at den nye ssh-nøgle blev navngivet “work_rsa”, kopier nu indholdet af den nyligt genererede offentlige nøglefil (work_rsa.pub i dette eksempel) og indsæt den på work GitHub-kontoens indstillingsside som beskrevet i GitHub-hjælpesiden.
Modificer ssh-konfigurationsfilen ( ~/.ssh/config)
Åbn konfigurationsfilen i en teksteditor (opret den, hvis der ikke findes en i ~/.ssh-mappen endnu) og tilføj følgende til den:
# 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
Klonér arbejdsprojektets repo (med en lidt anden adresse)
For at klone arbejdsprojektets repo ved hjælp af den nye ssh-nøgle skal vi justere lidt på repo’ens ssh-adresse. Host-url’en skal matche den Host, der er defineret i ssh-konfigurationsfilen fra sidste trin, nemlig hvor der i adressen er github.com
, skal du erstatte det med github.com-work
.
E.g., med følgende private repo ssh-adresse, som vi får fra GitHub:
[email protected]:/.git
Vi skal justere adressen sådan her, før vi kan git clone
den:
[email protected]:/.git
$ git clone [email protected]:/.git
Modificer pakken.json for at installere de private repo-afhængigheder
I det projekt, der er klonet lokalt, skal du finde de private repo-afhængigheder i dets pakke.json og lav den samme ændring til deres repo-adresse som i trin 3 (jeg ville ikke committe disse ændringer, da det ødelægger alt for andre, der også arbejder på dette projekt):
"dependencies": {
"private-module": "git+ssh://[email protected]/.git
...
}
*Det kan være nødvendigt først at lave en manuel installation for et af de private moduler i terminalen:
$ npm install git+ssh://[email protected]/
Så de private repos bliver genkendt i ssh known_hosts
og kan tilgås under npm-installationen af projektafhængigheder.