Aller au contenu
Comment configurer plusieurs clés SSH pour plusieurs comptes
  1. Blogs/

Comment configurer plusieurs clés SSH pour plusieurs comptes

·720 mots·4 mins·
Git - Cet article fait partie d'une série.
Partie : Cet article

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_github[email protected]
Gitlabid_rsa_gitlab[email protected]
Bitbucketid_rsa_bitbucket[email protected]

🛠️ Création de clés SSH
#

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

ssh-keygen -f "~/.ssh/id_rsa_github" -t rsa -b 4096 -C "[email protected]"
ssh-keygen -f "~/.ssh/id_rsa_gitlab" -t rsa -b 4096 -C "[email protected]"
ssh-keygen -f "~/.ssh/id_rsa_bitbucket" -t rsa -b 4096 -C "[email protected]"

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_nomOrganisation[email protected]
Gitlab Entrepriseid_rsa_gitlab_nomOrganisation[email protected]
Bitbucket Entrepriseid_rsa_bitbucket_nomOrganisation[email protected]

🛠️ Création de clés SSH
#

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

ssh-keygen -f "~/.ssh/id_rsa_github_nomOrganisation" -t rsa -b 4096 -C "[email protected]"
ssh-keygen -f "~/.ssh/id_rsa_gitlab_nomOrganisation" -t rsa -b 4096 -C "[email protected]"
ssh-keygen -f "~/.ssh/id_rsa_bitbucket_nomOrganisation" -t rsa -b 4096 -C "[email protected]"

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 personnelles
ssh-add ~/.ssh/id_rsa_github
ssh-add ~/.ssh/id_rsa_gitlab
ssh-add ~/.ssh/id_rsa_bitbucket

# Ajout des clés d'organisation
ssh-add ~/.ssh/id_rsa_github_nomOrganisation
ssh-add ~/.ssh/id_rsa_gitlab_nomOrganisation
ssh-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.

vim ~/.ssh/config

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

Host github.com
  HostName github.com
  IdentityFile ~/.ssh/id_rsa_github

Host gitlab.com
  HostName gitlab.com
  IdentityFile ~/.ssh/id_rsa_gitlab

Host bitbucket.org
  HostName bitbucket.org
  IdentityFile ~/.ssh/id_rsa_bitbucket


Host organisation.github.com
  HostName github.com
  IdentityFile ~/.ssh/id_rsa_github_nomOrganisation

Host organisation.gitlab.com
  HostName gitlab.com
  IdentityFile ~/.ssh/id_rsa_gitlab_nomOrganisation

Host organisation.bitbucket.org
  HostName bitbucket.org
  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.

# macOS
tr -d '\n' < ~/.ssh/id_rsa.pub | pbcopy

# Linux (nécessite le paquet xclip)
xclip -sel clip < ~/.ssh/id_rsa.pub

# Git Bash sur Windows
cat ~/.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.

git clone [email protected]: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).

git clone [email protected]: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.

Git - Cet article fait partie d'une série.
Partie : Cet article

Articles connexes

VS Code - utiliser les expressions régulières dans les recherches / remplacements
·493 mots·3 mins
Petit pense-bête pour utiliser les expressions régulières sur VS Code. C’estt une fonctionnalité que j’utilise fréquement, mais pas assez pour que je me souvienne des motifs quand j’en ai besoin.
GitFlow
·3657 mots·18 mins
GitFlow est ce que l’on appelle un workflow, une stratégie d’utilisation de Git. Il en existe plein d’autres mais GitFlow est l’un des plus connu.
Gestion des environnements Angular en livraison continue
·2389 mots·12 mins
Mise en oeuvre de la configuration de l’environnement dynamique dans Angular pour éviter un build par environnement