Gestion de plusieurs comptes github

Lorsque l'on a différents projets dans différents comptes GitHub, il devient difficile de tester ses projets sur la même machine. Je cherchais donc une façon simple afin d'alterner entre différents projets liés à différents comptes GitHub.

Voici donc un petit guide qui permet de faire cela.

Pour commencer, allons d'abord à la racine de notre ordinateur, cela nous évitera de changer plusieurs fois le chemin des répertoires dans lesquels nous ferons les changements.

In [3]:
%cd ~
/Users/nourmp

Tout d'abord vérifions si nous avons des clés SSH existantes avec ls -al ~/.ssh. Cela permettra de répertorier toutes les paires de clés publiques et privées existantes.

In [4]:
%ls -al ~/.ssh
total 16
drwx------   4 nourmp  staff   128 10 Dec 17:41 ./
drwxr-xr-x+ 77 nourmp  staff  2464 19 Apr 12:49 ../
-rw-------   1 nourmp  staff  3434 10 Dec 17:41 id_rsa
-rw-r--r--   1 nourmp  staff   738 10 Dec 17:41 id_rsa.pub

On voit bien que les deux derniers, id_rsa et id_rsa.pub sont la paire de clés liées à mon compte GitHub personnel existant sur ma machine, ce sont la clé privée et publique respectivement. Nous devons donc ajouter la paire de clés liée au compte du travail.

Nous allons ouvrir deux terminaux, celui de gauche (fond noir) sera lié au compte personnel. Alors que celui de droite (fond beige) sera lié à un autre compte, on va dire celui du travail.

image.png

Pour le compte de travail, nous allons créer une différente clé SSH. Le code ci-dessous va générer les clés SSH, et enregistre la clé publique avec le tag noureddine.meraihi@company.com:

ssh-keygen -t rsa -C "noureddine.meraihi@company.com" -f "id_rsa_work"`

Nous avons maintenant 4 clés:

In [10]:
%ls -al ~/.ssh
total 32
drwx------   6 nourmp  staff   192 19 Apr 13:28 ./
drwxr-xr-x+ 79 nourmp  staff  2528 19 Apr 13:15 ../
-rw-------   1 nourmp  staff  3434 10 Dec 17:41 id_rsa
-rw-r--r--   1 nourmp  staff   738 10 Dec 17:41 id_rsa.pub
-rw-------   1 nourmp  staff  1896 19 Apr 13:28 id_rsa_work
-rw-r--r--   1 nourmp  staff   410 19 Apr 13:28 id_rsa_work.pub

Ajout des clés SSH au compte GitHub

Tout d'abord, copions la clé id_rsa_work que nous venons de créer en exécutant la commande ci-dessous :

pbcopy < ~/.ssh/id_rsa_work.pub

Maintenant, on peut suivre les étapes dans la documentation officielle de GitHub afin d'ajouter la clé nouvellement créée à votre compte GitHub du travail.

Gestion des clés avec le fichier de configuration

Jusqu'à maintenant, nous ne pouvons pas encore copier parexemple un répertoire privé dans sa machine à partir du compte de travail, notre machine ne fait pas la différence quel clée est relieé à quel compte. Pour ce faire, nous devons inscrire ce shéma dans un fichier de cofiguration appelé config

Tout d'abord, cérons ce fichier avec la comande touch config

Ensuite, on peut ouvrire ce fichier avec la commande nano config ou atom config si l'on veut l'éditer avec un éditeur texte.

# Personal account - default config
Host github.com-personal
   HostName github.com
   User git
   IdentityFile ~/.ssh/id_rsa
# Work account
Host github.com-work
   HostName github.com
   User git
   IdentityFile ~/.ssh/id_rsa_work

On peut quitter le fichier ctrl+x ensuite Y pour quitter en sauvegardant ce fichier.

Pour rendre le processus de gestion des clés SSH moins stressant, créons deux fichiers de configuration de git. Le premier fichier serait destiné à la configuration globale pour une utilisation dans des projets personnels, et le second fichier serait destiné aux projets de travail.

Dans le terminal, nous allons dans la racine afin de créer le fichier de configuration global de git avec la commande ci-dessous :

cd ~
nano ~/.gitconfig

Nous modifions le contenu comme suit:

[user]
    name = Noureddine Meraihi
    email = nmeraihi@gmail.com

[includeIf "gitdir:~/work/"]
    path = ~/work/.gitconfig

Nous sauvegardons le tout avec ctrl+x ensuite Y

Créons un nouveau fichier de configuration git spécifique au répertoire work :

nano ~/work/.gitconfig

Ce fichier devrait contenir ceci:

[user]
    email = noureddine.meraihi@company.com

Sauvegarde des clés

D'abord, supprimons toute clé précédemment stockée en utilisant la commande :

cd ~
ssh-add -D

Ajoutons les nouvelles clés créées à la machine locale:

ssh-add id_rsa
ssh-add id_rsa_work

Maintenant, procédons à l'authentification des clés avec GitHub en utilisant les commandes ci-dessous :

ssh -T github.com-personal
  # Hi USERNAME! You've successfully authenticated, but GitHub does not provide shell access.
ssh -T github.com-work
  # Hi USERNAME! You've successfully authenticated, but GitHub does   not provide shell access.

Dorénavant, si l'on veut cloner un fichier par exemple du travail, nous devons modifier un peu notre façon classique de le faire. En effet, nous devons dorénavant -work ou -personnal juste après le git@github.com tout en spécifiant le bon utilisateur.

Par exemple, dans la commande ci-dessous, nous clonons le répertoire repoTestWork

git clone git@github.com-work:USERNAME/repoTestWork.git

Alors que dans la commande ci-dessous, nous clonons le répertoire

git clone git@github.com-personal:USERNAME/repoTestPersonal.git

Ajouter quelques fichier à ignorer:

Afin de ne pas sauvegarder dans GitHub certain métafichier tel que .DS_Store ou encore .ipynb_checkpoints, on peut taper la commande suivante afin d'ajouter le fichier en question à la liste des fichiers à ignorer.

echo .DS_Store >> .gitignore

On peut vérifier cette liste avec nano ~/.gitignore

image.png



Comments

comments powered by Disqus