En rejoignant mon lieu de travail actuel, on m’a demandé de créer un nouveau compte GitHub avant de pouvoir être membre de l’organisation GitHub de l’entreprise et d’avoir à son tour accès à tous les dépôts de projets privés.
Ce n’est que lorsque j’ai laissé l’ordinateur portable du travail dans mon casier mais que j’avais encore besoin de faire quelque chose que j’ai ressenti le besoin de gérer mes deux comptes GitHub sur mon ordinateur portable personnel (qui a besoin d’un équilibre entre le travail et la vie privée ?)
Pour compliquer les choses, le projet sur lequel je travaille référence d’autres dépôts privés dans son bloc de dépendances package.json
et doit y accéder à npm install
, qui utilise par défaut la clé ssh de mon compte GitHub personnel.
Après quelques essais et échecs, voici comment j’ai finalement réussi à le faire fonctionner :
Créer une nouvelle clé ssh et l’ajouter au compte GitHub de travail
$ ssh-keygen -t rsa -b 4096 -C "my_work_email@my_company.com"
Disons que la nouvelle clé ssh a été nommée « work_rsa », copiez maintenant le contenu du fichier de clé publique nouvellement généré (work_rsa.pub dans cet exemple) et collez-le à la page de configuration du compte GitHub de travail comme décrit dans la page d’aide de GitHub.
Modifier le fichier de configuration ssh ( ~/.ssh/config)
Ouvrir le fichier de configuration dans un éditeur de texte (le créer s’il n’y en a pas encore dans le dossier ~/.ssh) et ajoutez-y ce qui suit :
# 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
Cloner le repo du projet de travail (avec une adresse légèrement différente)
Pour cloner le repo du projet de travail en utilisant la nouvelle clé ssh, nous devons modifier un peu l’adresse ssh du repo. L’url de l’hôte doit correspondre à l’hôte défini dans le fichier de configuration ssh de la dernière étape, à savoir, où dans l’adresse il y a github.com
, remplacez-le par github.com-work
.
Ex, avec l’adresse ssh du repo privé suivant que nous obtenons de GitHub:
[email protected]:/.git
Nous devons modifier son adresse comme ceci avant de pouvoir git clone
le faire:
[email protected]:/.git
$ git clone [email protected]:/.git
Modifier le package.json pour installer les dépendances du repo privé
Dans le projet qui a cloné localement, trouvez les dépendances du repo privé dans son package.json et faites la même modification à leur adresse de repo que dans l’étape 3 (je ne commettrais pas ces modifications car cela casse tout pour les autres personnes qui travaillent aussi sur ce projet):
"dependencies": {
"private-module": "git+ssh://[email protected]/.git
...
}
*Il peut être nécessaire de faire d’abord une installation manuelle pour l’un des modules privés dans le terminal:
$ npm install git+ssh://[email protected]/
Pour que les repo privés soient reconnus dans le ssh known_hosts
et puissent être accédés pendant l’installation par npm des dépendances du projet.