Introduction

Je possède des comptes personnels et professionnels sur GitHub, GitLab et Bitbucket.
Comment pourrais-je définir tout cela pour qu’il fonctionne correctement grâce aux clés SSH afin que mon système s’appuie sur la bonne clé SSH en fonction de l’identité qu’il doit utiliser.

Pour ce post particulier, nous allons connecter une identité personnelle et professionnelle pour chaque compte.
Mais vous pouvez en ajouter autant que vous le souhaitez. 😉

🔑 Génération de clés

Nous allons créer des identités par défaut.

Nous pouvons utiliser la même clé SSH pour cela ou utiliser une clé spécifique par compte.

  • Même clé : id_rsa
  • Clé spécifique par compte : id_rsa_github ; id_rsa_bitbucket ; id_rsa_gitlab

Utilisons la méthode de la “clé spécifique par compte”. Il sera alors plus clair pour tout le monde de comprendre le concept.
De plus, nous avons besoin de l’adresse e-mail que vous utilisez pour ces comptes.
Mais n’hésitez pas à faire ce qui vous convient.😉

👨‍💻 🗝️ Génération de clés personnelles

✍️ Informations nécessaires

Résumons ce dont nous avons besoin dans un tableau.

CompteNom de la clé SSHE-mail
Githubid_rsa_githubnom.github@gmail.com
Gitlabid_rsa_gitlabnom.gitlab@gmail.com
Bitbucketid_rsa_bitbucketnom.bitbucket@gmail.com

🛠️ Création de clés SSH

Exécutons ces commandes pour créer les clés SSH.

Création de clés SSH
1ssh-keygen -f "~/.ssh/id_rsa_github" -t rsa -b 4096 -C "nom.github@gmail.com"
2ssh-keygen -f "~/.ssh/id_rsa_gitlab" -t rsa -b 4096 -C "nom.gitlab@gmail.com"
3ssh-keygen -f "~/.ssh/id_rsa_bitbucket" -t rsa -b 4096 -C "nom.bitbucket@gmail.com"

Maintenant, nous avons 3 clés pour notre usage personnel.

🏢 🔑 Génération de clés d’organisation

✍️ Informations requises

Résumons ce dont nous avons besoin dans un tableau.

CompteNom de la clé SSHE-mail
Github Entrepriseid_rsa_github_nomOrganisationnom.github@organisation.com
Gitlab Entrepriseid_rsa_gitlab_nomOrganisationnom.gitlab@organisation.com
Bitbucket Entrepriseid_rsa_bitbucket_nomOrganisationnom.bitbucket@organisation.com

🛠️ Création de clés SSH

Exécutons ces commandes pour créer les clés SSH.

Création de clés SSH
1ssh-keygen -f "~/.ssh/id_rsa_github_nomOrganisation" -t rsa -b 4096 -C "nom.github@organisation.com"
2ssh-keygen -f "~/.ssh/id_rsa_gitlab_nomOrganisation" -t rsa -b 4096 -C "nom.gitlab@organisation.com"
3ssh-keygen -f "~/.ssh/id_rsa_bitbucket_nomOrganisation" -t rsa -b 4096 -C "nom.bitbucket@organisation.com"

Maintenant, nous avons 3 clés pour notre usage professionnel.

📦 Ajouter les clés SSH à l’agent SSH

Nous avons maintenant 6 clés SSH. Ajoutons-les à l’agent SSH.

Ajout des clés dans l'agent SSH
1# Ajout des clés personnelles
2ssh-add ~/.ssh/id_rsa_github
3ssh-add ~/.ssh/id_rsa_gitlab
4ssh-add ~/.ssh/id_rsa_bitbucket
5
6# Ajout des clés d'organisation
7ssh-add ~/.ssh/id_rsa_github_nomOrganisation
8ssh-add ~/.ssh/id_rsa_gitlab_nomOrganisation
9ssh-add ~/.ssh/id_rsa_bitbucket_nomOrganisation

Nous avons donc dans l’agent SSH les 3 clés pour notre usage personnel et les 3 clés pour l’usage professionnel.

Maintenant il est obligatoire de mettre en place la configuration afin de définir quelle clé doit être utilisée en fonction du contexte.

📝 Configuration

Ouvrir le fichier ~/.ssh/config ou le créer s’il n’existe pas encore.

Ouvrir le fichier ~/.ssh/config
1vim ~/.ssh/config

Nous allons définir quelques règles basées sur les hôtes.

vim ~/.ssh/config
 1Host github.com
 2  HostName github.com
 3  IdentityFile ~/.ssh/id_rsa_github
 4
 5Host gitlab.com
 6  HostName gitlab.com
 7  IdentityFile ~/.ssh/id_rsa_gitlab
 8
 9Host bitbucket.org
10  HostName bitbucket.org
11  IdentityFile ~/.ssh/id_rsa_bitbucket
12
13
14Host organisation.github.com
15  HostName github.com
16  IdentityFile ~/.ssh/id_rsa_github_nomOrganisation
17
18Host organisation.gitlab.com
19  HostName gitlab.com
20  IdentityFile ~/.ssh/id_rsa_gitlab_nomOrganisation
21
22Host organisation.bitbucket.org
23  HostName bitbucket.org
24  IdentityFile ~/.ssh/id_rsa_bitbucket_nomOrganisation

Enregistrez et fermez le fichier.

💭 Ajouter les clés à vos comptes de dépôts

Tout est correctement configuré en local. Il faut maintenant ajouter les clés SSH publiques aux services que vous utilisez.

Mettre dans le presse-papiers
1# macOS
2tr -d '\n' < ~/.ssh/id_rsa.pub | pbcopy
3
4# Linux (nécessite le paquet xclip)
5xclip -sel clip < ~/.ssh/id_rsa.pub
6
7# Git Bash sur Windows
8cat ~/.ssh/id_rsa.pub | clip

Connectons-nous à vos comptes et allons dans les paramètres pour ajouter nos clés SSH.

Suivez la documentation de votre service pour savoir comment ajouter les clés.

👨‍👦 Cloner des dépôts

Maintenant que nous avons notre Setup pour tous nos environnements, nous pouvons cloner des dépôts depuis Github, Gitlab ou Bitbucket avec l’identité appropriée.

👨‍💻 Dépôts personnels

Nous pouvons donc cloner les projets en utilisant une commande que vous avez dû utiliser de nombreuses fois.

Cloner un dépôt personnel
1git clone git@bitbucket.org:yourPersonalAccount/pet-project.git

Avec cette commande, git utilise la clé SSH “par défaut”. C’est celle qui a été définie pour l’hôte "Host github.com" dans le fichier ~/.ssh/config.

Vous pouvez alors pull ou push sur le dépôt avec cette identité.

🏢 Dépôts d’organisations

Pour les projets de votre organisation, il vous suffit de cloner le projet remplaçant bitbucket.org par organisation.bitbucket.org (tel que défini dans le fichier ~/.ssh/config).

Cloner un dépôt professionnel
1git clone git@companyname.bitbucket.org:companyName/company-project.git

C’est donc la bonne identité qui va être utilisée.
Vous pouvez ensuite pullor push autant de fois que vous le souhaitez avec l’identité de votre organisation.

J’espère que cela vous aidera.