add_ssh_keys CircleCI : Sécuriser l’accès aux dépôts et serveurs distants

Par Xavier Deloffre

Dans un contexte d’intégration continue, l’automatisation dépasse largement la simple exécution de tests ou la génération d’artefacts. Les pipelines CI/CD doivent fréquemment interagir avec des ressources externes protégées, telles que des dépôts Git privés, des serveurs de déploiement, des registres internes ou des machines d’infrastructure intermédiaires. Dans ce cadre, la gestion de l’authentification devient un composant technique structurant du pipeline. CircleCI apporte une réponse à cette problématique à travers le mécanisme add_ssh_keys. Cette commande permet d’injecter de manière contrôlée des clés SSH dans l’environnement d’exécution d’un job, afin d’établir des connexions sécurisées et entièrement automatisées. Utilisée correctement, add_ssh_keys s’impose comme un élément clé pour concevoir des pipelines CI/CD robustes, sécurisés et conformes aux bonnes pratiques. Cet article en détaille le fonctionnement, les principaux cas d’usage ainsi que les points de vigilance à prendre en compte pour une mise en œuvre maîtrisée.

Le rôle de add_ssh_keys dans CircleCI

Dans CircleCI, les jobs s’exécutent dans des environnements éphémères et strictement isolés. Chaque exécution démarre à partir d’un environnement vierge, sans état persistant ni accès préalable à des ressources sensibles. Par défaut, aucun accès SSH n’est configuré, ce qui empêche toute interaction avec des ressources privées externes. Or, dans de nombreux scénarios CI/CD avancés, un pipeline doit accéder à des éléments protégés. Cela peut inclure le clonage de dépôts Git privés non liés directement au projet, l’utilisation de sous-modules Git privés, la connexion à des serveurs de déploiement ou l’exécution de commandes à distance sur des machines d’infrastructure.

La commande add_ssh_keys a précisément pour rôle de répondre à ce besoin. Elle permet d’injecter dynamiquement une ou plusieurs clés SSH dans l’environnement d’exécution d’un job, uniquement pendant la durée de celui-ci. Les clés sont stockées de manière chiffrée dans CircleCI et ne sont jamais exposées en clair dans les fichiers de configuration ou les logs. Sur le plan technique, add_ssh_keys est déclarée comme une étape au sein d’un job. Lors de son exécution, CircleCI copie la ou les clés privées correspondantes dans le répertoire SSH de l’utilisateur courant, généralement ~/.ssh. Les permissions des fichiers sont automatiquement ajustées afin de respecter les exigences de sécurité d’OpenSSH, garantissant ainsi le bon fonctionnement des connexions. Une fois les clés injectées, l’environnement de build peut utiliser des commandes standards telles que git clone, ssh, scp ou rsync sans configuration supplémentaire. L’authentification repose entièrement sur la clé SSH fournie, ce qui permet une automatisation complète, sans mot de passe ni intervention manuelle.

Il est essentiel de souligner que add_ssh_keys ne crée ni ne génère de clés SSH. Elle se contente d’exploiter des clés préalablement ajoutées dans l’interface CircleCI, au niveau du projet ou de l’organisation. Cette séparation des responsabilités renforce la sécurité et facilite la gestion, la rotation et l’audit des accès. Le tableau ci-dessous synthétise les principaux rôles et implications techniques de add_ssh_keys dans un pipeline CircleCI.

fonction description technique
injection de clés ssh Ajoute dynamiquement des clés SSH privées dans l’environnement d’exécution du job, uniquement pendant sa durée de vie.
sécurisation des accès Permet l’authentification vers des ressources privées sans exposer de secrets dans le code ou les variables d’environnement.
isolation des jobs Les clés injectées ne sont disponibles que dans le job concerné et disparaissent automatiquement à la fin de l’exécution.
compatibilité outillée Fonctionne avec les outils standards basés sur SSH comme Git, OpenSSH, SCP ou Rsync, sans configuration spécifique.
gestion centralisée Les clés sont administrées via l’interface CircleCI, facilitant leur rotation, leur suppression et le contrôle des accès.
automatisation complète Supprime toute interaction manuelle dans les pipelines nécessitant des connexions sécurisées vers des ressources externes.
support multi-clés Permet l’injection de plusieurs clés SSH dans un même job afin de gérer des accès distincts à différents services ou serveurs.
séparation des environnements Autorise l’utilisation de clés différentes selon les environnements, comme développement, préproduction ou production.
traçabilité des accès Chaque clé est associée à un projet ou une organisation, facilitant l’audit et le suivi des usages dans les pipelines.
intégration avec les workflows L’injection des clés peut être conditionnée par les workflows, en fonction des branches, des tags ou du contexte d’exécution.
déploiement sur serveur dédié Permet les connexions SSH automatisées vers un serveur dédié pour le transfert de fichiers ou l’exécution de commandes distantes.
réduction des risques de fuite Évite le stockage de clés SSH directement dans le dépôt ou dans des scripts, limitant ainsi les risques de compromission.

Ainsi, add_ssh_keys joue un rôle central dans l’extension des capacités de CircleCI vers des environnements sécurisés externes. Elle permet de concilier isolation des jobs, automatisation avancée et respect des bonnes pratiques de sécurité, tout en conservant une configuration lisible et maîtrisée.

rôle de add-ssh-keys dans CircleCI

La configuration et les cas d’usage de add_ssh_keys

Avant de pouvoir utiliser add_ssh_keys dans un pipeline CircleCI, il est nécessaire d’ajouter une clé SSH via les paramètres du projet ou de l’organisation. Cette étape constitue le socle de toute interaction sécurisée avec des ressources externes. La clé privée est stockée de manière chiffrée par CircleCI, tandis que la clé publique doit être déployée sur les ressources cibles, telles qu’un dépôt Git privé, un serveur distant ou un serveur dédié utilisé pour les déploiements. Une fois la clé enregistrée, CircleCI lui associe une empreinte unique, appelée fingerprint. Cette empreinte sert d’identifiant technique dans le fichier de configuration et permet de référencer explicitement la clé à injecter lors de l’exécution d’un job. Ce mécanisme est particulièrement utile lorsque plusieurs clés SSH sont utilisées au sein d’un même projet, par exemple pour séparer les accès à un dépôt de code, à un serveur dédié de production ou à un environnement de préproduction. Dans le fichier .circleci/config.yml, add_ssh_keys est généralement déclarée comme une étape au sein d’un job. Elle peut être configurée pour injecter une ou plusieurs clés en fonction des besoins. Cette flexibilité permet, par exemple, d’utiliser une clé dédiée à l’accès à un dépôt Git privé et une autre réservée aux opérations de déploiement sur un serveur dédié. Les cas d’usage les plus courants de add_ssh_keys incluent :

  • Le clonage de dépôts Git privés non directement liés au projet CircleCI ;
  • Le déploiement applicatif automatisé sur des serveurs via SSH ;
  • L’exécution de scripts distants sur des machines d’infrastructure ou des serveurs dédiés ;
  • L’accès à des sous-modules Git privés nécessitant une authentification spécifique

Dans un contexte de déploiement, add_ssh_keys est fréquemment combinée avec des commandes telles que rsync ou scp. Ces outils permettent de transférer de manière sécurisée des fichiers, des binaires ou des artefacts générés par le pipeline vers un serveur distant ou un serveur dédié, sans intervention manuelle. Il est également courant d’intégrer add_ssh_keys dans des workflows conditionnels. Par exemple, une clé SSH de déploiement peut être injectée uniquement lorsque le pipeline s’exécute sur la branche principale ou lors de la création d’un tag correspondant à une version. Cette stratégie permet de limiter l’exposition des accès sensibles et de renforcer la séparation entre les environnements de développement, de test et de production. Le tableau ci-dessous synthétise les principales étapes de configuration et les cas d’usage associés à add_ssh_keys.

configuration ou usage description technique
ajout de la clé ssh La clé privée est ajoutée et chiffrée dans CircleCI, tandis que la clé publique est installée sur un dépôt Git privé ou un serveur dédié.
fingerprint de la clé Identifiant unique utilisé dans la configuration pour sélectionner précisément la clé à injecter dans un job.
accès à des dépôts privés Permet de cloner, mettre à jour ou référencer des dépôts Git nécessitant une authentification SSH.
déploiement sur serveur dédié Autorise les connexions SSH automatisées vers un serveur dédié pour le transfert de fichiers, l’exécution de commandes ou les mises à jour applicatives.
workflows conditionnels Injection des clés limitée à certaines branches, tags ou contextes afin de réduire l’exposition des accès sensibles.
segmentation des accès Utilisation de plusieurs clés SSH pour isoler les droits entre code source, infrastructure, préproduction et production.
rotation des clés Possibilité de remplacer ou révoquer une clé SSH dans CircleCI sans modifier la configuration des pipelines.
séparation projet / organisation Gestion des clés au niveau du projet ou de l’organisation pour mutualiser ou restreindre les accès selon les besoins.
déploiements multi-environnements Utilisation de clés distinctes pour déployer sur plusieurs serveurs dédiés ou environnements isolés.
accès aux sous-modules git Permet l’authentification SSH nécessaire au chargement de sous-modules Git privés.
exécution de scripts distants Autorise le lancement de scripts ou de commandes sur des serveurs distants via SSH depuis un job CircleCI.
audit et traçabilité Facilite l’identification des clés utilisées par projet, améliorant le suivi et la conformité des accès.

En combinant une configuration rigoureuse et des cas d’usage bien définis, add_ssh_keys permet d’étendre les pipelines CircleCI à des environnements sécurisés, tout en conservant un haut niveau de contrôle et de traçabilité sur les accès SSH.

Xavier Deloffre

Xavier Deloffre

Fondateur de Facem Web, agence implantée à Arras et à Lille (Hauts-de-France), je suis spécialiste du Web Marketing, formateur expérimenté, et blogueur reconnu dans le domaine du Growth Hacking. Passionné par le référencement naturel (SEO) que j'ai découvert en 2009, j'imagine et développe des outils web innovants afin d'optimiser la visibilité de mes clients dans les SERPs. Mon objectif principal : renforcer leur notoriété en ligne par des stratégies digitales efficaces et créatives.

0 commentaires

Soumettre un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Besoin de visibilité ?

☑️ Experts du référencement

☑️ + de 12 ans d’éxpérience

☑️ + 500 clients satisfaits

☑️ Création de sites

☑️ Audit SEO

☑️ Conseil SEO

☑️ Référencement de sites

☑️ Devis gratuit