Gérer plusieurs clés SSH pour GitLab et GitHub

Gérer plusieurs clés SSH pour GitLab et GitHub

Jeudi, Décembre 29, 2016

Il est parfois nécessaire d'avoir plusieurs clés SSH par exemple si l'on a plusieurs compte chez GitHub, GitLab, etc. ou si l'on ne souhaite pas mélanger ses projets perso et professionnel.
Nous configurons ici deux clés pour l'exemple:
id_rsa_work pour le compte GitHub
id_rsa_home pour le compte GitLab
mais il est possible d'en créé autant que de besoin.

Création des clés sur la machine client

Générer une nouvelle clé avec l'email de votre compte Github :

$ ssh-keygen -t rsa -C "your_name@home_email.com"

Après ce message :

Generating public/private rsa key pair.
Enter file in which to save the key (/home/user_name/.ssh/id_rsa):

Entrer le nom de la clé (attention user_name peut être différent) :

/home/user_name/.ssh/id_rsa_work

Entrez la passphrase de votre choix.
 

Générer une nouvelle clé avec l'email de votre compte GitLab

$ ssh-keygen -t rsa -C "your_name@home_email.com"

Après ce message :

Generating public/private rsa key pair.
Enter file in which to save the key (/home/user_name/.ssh/id_rsa):

Entrer le nom de la clé (attention user_name peut être différent) :

/home/user_name/.ssh/id_rsa_home

Entrez la passphrase de votre choix.


Verifions ensuite que les clés ont bien été généré :

$ ls ~/.ssh

On obtient une liste des clés privées et publiques (.pub) :

id_rsa_home  id_rsa_work  id_rsa_home.pub  id_rsa_work.pub

 

Création du fichier config

Créons maintenant un fichier config pour organiser les clés :

$ cd ~/.ssh/
$ touch config
$ nano config

 

Ajouter au fichier (respecter la syntax yaml) :

# Home account
Host gitlab.com
   HostName gitlab.com
   PreferredAuthentications publickey
   IdentityFile ~/.ssh/id_rsa_home

# Work account
Host github.com
   HostName github.com
   PreferredAuthentications publickey
   IdentityFile ~/.ssh/id_rsa_work

 

 

Supprimer ensuite le cache des clé ssh :

$ ssh-add -D

Si vous voyez le message d'erreur suivant :

Could not open a connection to your authentication agent.

c'est qu'il vous faut démarrer ssh-agent:

$ eval `ssh-agent -s`

Et réessayez la commande précedente.

Vérifier ensuite que les clés ont été ajouté :

$ ssh-add -l

doit afficher par exemple :
2048 d4:e0:39:e1:bf:6f:e3:26:14:6b:26:73:4e:b4:53:83 /home/user/.ssh/id_rsa_home (RSA)
2048 7a:32:06:3f:3d:6c:f4:a1:d4:65:13:64:a4:ed:1d:63 /home/user/.ssh/id_rsa_work (RSA)

Si ce n'est pas le cas vous devez alors les ajouter :

$ ssh-add ~/.ssh/id_rsa_work
$ ssh
-add ~/.ssh/id_rsa_home


Ajoutez les clés publiques à vos comptes Gitlab et Github

entrez pour afficher la clé publique (.pub) :
$ cat ~/.ssh/id_rsa_home.pub

Copiez le code par exemple  :
ssh-rsa BLABLABLA.... your_name@home_email.com
 

Coller ce code sur votre compte Gitlab dans la rubrique ssh keys
et faites de même pour la clé Github sur votre compte Github.

Tester les connexions :

$ ssh -T git@gitlab.com
Welcome to GitLab, CompanyUser!

$ ssh -T git@github.com
Welcome to GitLab, CompanyUser!

 

Configurez le git config user global et/ou de chacun de vos projet

définir le user global :

$ git config --global user.name "work_user"
$ git config --global user.email "your_name@home_email.com"

Supplanter le user d'un projet si il doit être différent du user global :

$ cd ~/home_project
$ git config user
.name "home_user"
$ git config user.email "your_name@home_email.com"

 


 

 

 

Bienvenue sur le blog !

Il s'agissait au départ d'un recueil de notes donc certains billets sont plutôt succincts.
J'espère que vous y trouverez l'info qu'il vous manque dans votre recherche.
Vos commentaires sont les bienvenus.

Bonne lecture !

Mois / Années

Recherche