Skip to main content

Gestion des clés de déploiement

Découvrez différentes façons de gérer les clés SSH sur vos serveurs lorsque vous automatisez les scripts de déploiement et quelle méthode est la meilleure pour vous.

Vous pouvez gĂ©rer des clĂ©s SSH sur vos serveurs pendant l’automatisation des scripts de dĂ©ploiement en utilisant le transfert d’agent SSH, HTTPS avec des jetons OAuth, des clĂ©s de dĂ©ploiement ou des utilisateurs de machine.

Transfert d’agent SSH

Dans de nombreux cas, en particulier au dĂ©but d’un projet, le transfert d’agent SSH est la mĂ©thode la plus rapide et la plus simple. Le transfert d’agent utilise les mĂȘmes clĂ©s SSH que votre ordinateur de dĂ©veloppement local.

Avantages du transfert d’agent SSH

  • Vous n’avez pas besoin de gĂ©nĂ©rer ni de suivre de nouvelles clĂ©s.
  • Il n’y a pas de gestion des clĂ©s, les utilisateurs ont les mĂȘmes autorisations sur le serveur que celles qu’ils ont localement.
  • Comme aucune clĂ© n’est stockĂ©e sur le serveur, si le serveur est compromis, vous n’avez pas besoin de chasser ni de supprimer les clĂ©s compromises.

InconvĂ©nients du transfert d’agent SSH

  • Les utilisateurs doivent ouvrir une connexion SSH pour le dĂ©ploiement, les processus de dĂ©ploiement automatiques ne peuvent pas ĂȘtre utilisĂ©s.
  • Le transfert d’agent SSH peut ĂȘtre difficile Ă  exĂ©cuter pour les utilisateurs Windows.

Configurer le transfert d’agent SSH

  1. Activez le transfert d’agent localement. Pour plus d’informations, consultez notre guide sur le transfert d’agent SSH.
  2. DĂ©finissez vos scripts de dĂ©ploiement pour utiliser le transfert d’agent. Par exemple, sur un script bash, l’activation du transfert d’agent ressemble Ă  ceci : ssh -A serverA 'bash -s' < deploy.sh

Clonage HTTPS avec des jetons OAuth

Si vous ne voulez pas utiliser de clés SSH, vous pouvez utiliser HTTPS avec des jetons OAuth.

Avantages du clonage HTTPS avec des jetons OAuth

  • Toute personne ayant accĂšs au serveur peut dĂ©ployer le dĂ©pĂŽt.
  • Les utilisateurs n’ont pas besoin de changer leurs paramĂštres SSH locaux.
  • Vous n’avez pas besoin d’avoir plusieurs jetons (un pour chaque utilisateur), un jeton par serveur suffit.
  • Un jeton peut ĂȘtre rĂ©voquĂ© Ă  tout moment, ce qui le convertit essentiellement en mot de passe Ă  usage unique.

Inconvénients du clonage HTTPS avec des jetons OAuth

  • Vous devez veiller Ă  configurer votre jeton avec les Ă©tendues d’accĂšs appropriĂ©es.
  • Les jetons sont essentiellement des mots de passe et doivent ĂȘtre protĂ©gĂ©s de la mĂȘme façon.

Configurer le clonage HTTPS avec des jetons OAuth

Consultez notre guide sur la crĂ©ation d’un personal access token.

Clés de déploiement

Vous pouvez lancer des projets Ă  partir d’un rĂ©fĂ©rentiel sur GitHub.com sur votre serveur Ă  l’aide d’une clĂ© de dĂ©ploiement, qui est une clĂ© SSH accordant l’accĂšs Ă  un seul rĂ©fĂ©rentiel. GitHub attache la partie publique de la clĂ© directement Ă  votre dĂ©pĂŽt au lieu d'un compte personnel, et la partie privĂ©e de la clĂ© reste sur votre serveur. Pour plus d’informations, consultez « Livraison de dĂ©ploiements Â».

Les clĂ©s de dĂ©ploiement avec accĂšs en Ă©criture peuvent effectuer les mĂȘmes actions qu’un membre d’organisation avec un accĂšs administrateur ou qu’un collaborateur sur un dĂ©pĂŽt personnel. Pour plus d’informations, consultez « RĂŽles de dĂ©pĂŽt pour une organisation Â» et « Niveaux d’autorisation pour un rĂ©fĂ©rentiel de compte personnel Â».

Pour une sĂ©curitĂ© renforcĂ©e et un contrĂŽle prĂ©cis sur l’accĂšs au rĂ©fĂ©rentiel et les autorisations, nous vous recommandons d’utiliser une application GitHub Ă  la place. Consultez DĂ©cider quand crĂ©er une application GitHub.

Avantages des clés de déploiement

  • Toute personne ayant accĂšs au dĂ©pĂŽt et au serveur a la possibilitĂ© de dĂ©ployer le projet.
  • Les utilisateurs n’ont pas besoin de changer leurs paramĂštres SSH locaux.
  • Les clĂ©s de dĂ©ploiement sont en lecture seule par dĂ©faut, mais vous pouvez leur accorder un accĂšs en Ă©criture quand vous les ajoutez Ă  un dĂ©pĂŽt.

Inconvénients des clés de déploiement

  • DĂ©ployer des clĂ©s accorde uniquement l’accĂšs Ă  un seul dĂ©pĂŽt. Les projets plus complexes peuvent avoir de nombreux dĂ©pĂŽts Ă  tirer sur le mĂȘme serveur.
  • Les clĂ©s de dĂ©ploiement ne sont gĂ©nĂ©ralement pas protĂ©gĂ©es par une phrase secrĂšte, ce qui rend la clĂ© facilement accessible si le serveur est compromis.
  • Les clĂ©s de dĂ©ploiement sont des informations d’identification qui n’ont pas de date d’expiration.
  • Les clĂ©s de dĂ©ploiement ne sont pas directement liĂ©es Ă  l’appartenance Ă  l’organisation. Si l’utilisateur qui a créé le clĂ© de dĂ©ploiement est supprimĂ© du rĂ©fĂ©rentiel, la clĂ© de dĂ©ploiement sera toujours active, car il n’est pas liĂ© Ă  l’utilisateur spĂ©cifique, mais plutĂŽt au rĂ©fĂ©rentiel.

Configurer des clés de déploiement

  1. ExĂ©cutez la procĂ©dure ssh-keygen sur votre serveur et notez l’endroit oĂč vous enregistrez la paire de clĂ©s RSA publique et privĂ©e gĂ©nĂ©rĂ©e.

  2. Sur GitHub, accédez à la page principale du référentiel.

  3. Sous le nom de votre dĂ©pĂŽt, cliquez sur ParamĂštres. Si vous ne voyez pas l’onglet « ParamĂštres Â», sĂ©lectionnez le menu dĂ©roulant , puis cliquez sur ParamĂštres.

    Capture d’écran d’un en-tĂȘte de dĂ©pĂŽt montrant les onglets. L’onglet « ParamĂštres Â» est mis en Ă©vidence avec un encadrĂ© orange foncĂ©.

  4. Dans la barre latérale, cliquez sur Clés de déploiement.

  5. Cliquez sur Add deploy key (Ajouter une clé de déploiement).

  6. Dans le champ « Titre », indiquez un titre.

  7. Dans le champ « Clé », collez votre clé publique.

  8. SĂ©lectionnez Autoriser l’accĂšs en Ă©criture pour que cette clĂ© ait un accĂšs en Ă©criture sur le dĂ©pĂŽt. Une clĂ© de dĂ©ploiement avec un accĂšs en Ă©criture permet Ă  un dĂ©ploiement de pousser vers le dĂ©pĂŽt.

  9. Cliquez sur Ajouter une clé.

Vous pouvez Ă©galement utiliser l’API REST pour crĂ©er des clĂ©s de dĂ©ploiement. Pour plus d’informations, consultez « Points de terminaison d’API REST pour les clĂ©s de dĂ©ploiement Â».

Utilisation de plusieurs dépÎts sur un seul serveur

Si vous utilisez plusieurs dépÎts sur un serveur, vous devez générer une paire de clés dédiée pour chacun. Vous ne pouvez pas réutiliser une clé de déploiement pour plusieurs dépÎts.

Dans le fichier de configuration SSH du serveur (gĂ©nĂ©ralement ~/.ssh/config), ajoutez une entrĂ©e d’alias pour chaque dĂ©pĂŽt. Par exemple :

Host github.com-repo-0
        Hostname github.com
        IdentityFile=/home/user/.ssh/repo-0_deploy_key

Host github.com-repo-1
        Hostname github.com
        IdentityFile=/home/user/.ssh/repo-1_deploy_key
  • Host github.com-repo-0 : alias du dĂ©pĂŽt.
  • Hostname github.com : configure le nom d’hĂŽte Ă  utiliser avec l’alias.
  • IdentityFile=/home/user/.ssh/repo-0_deploy_key : attribue une clĂ© privĂ©e Ă  l’alias.

Vous pouvez ensuite utiliser l’alias du nom d’hĂŽte pour interagir avec le dĂ©pĂŽt en utilisant SSH, qui utilise la clĂ© de dĂ©ploiement unique attribuĂ©e Ă  cet alias. Par exemple :

git clone git@github.com-repo-1:OWNER/repo-1.git

Jetons d’accùs d’installation pour une GitHub App

Si votre serveur doit accĂ©der Ă  des rĂ©fĂ©rentiels dans une ou plusieurs organisations, vous pouvez utiliser une GitHub App pour dĂ©finir l’accĂšs dont vous avez besoin, puis gĂ©nĂ©rer des jetons d’accĂšs d’installation Ă©troitement dĂ©finis Ă  partir de cette GitHub App. Les jetons d’accĂšs d’installation peuvent ĂȘtre dĂ©limitĂ©s Ă  un ou plusieurs rĂ©fĂ©rentiels, et peuvent avoir des permissions affinĂ©es. Par exemple, vous pouvez gĂ©nĂ©rer un jeton avec un accĂšs en lecture seule sur le contenu d’un dĂ©pĂŽt.

Étant donnĂ© que GitHub Apps constitue un acteur de premiĂšre classe sur GitHub, les jetons d’accĂšs Ă  l’installation sont dĂ©couplĂ©s Ă  partir de n’importe quel utilisateur GitHub, ce qui les rend comparables Ă  des « jetons de service Â». Par ailleurs, les jetons d’accĂšs d’installation ont des limites de dĂ©bit dĂ©diĂ©es qui s’adaptent en fonction de la taille des organisations sur lesquelles ils agissent. Pour plus d’informations, consultez Limites de dĂ©bit des GitHub Apps.

Avantages des jetons d’accùs d’installation

  • Jetons avec une Ă©tendue limitĂ©e, et avec des jeux d’autorisation et des dĂ©lais d’expiration bien dĂ©finis (1 heure ou moins s’ils sont rĂ©voquĂ©s manuellement avec l’API)
  • Limites de dĂ©bit dĂ©diĂ©es qui augmentent avec votre organisation
  • DĂ©couplĂ© des GitHub identitĂ©s des utilisateurs, de sorte qu'ils ne consomment pas de siĂšges avec licence
  • Ne reçoit jamais de mot de passe, ne peut donc pas recevoir de connexion directe

InconvĂ©nients des jetons d’accĂšs d’installation

  • Une configuration supplĂ©mentaire est nĂ©cessaire pour crĂ©er la GitHub App.
  • Les jetons d’accĂšs d’installation expirent au bout d’une heure, c’est pourquoi ils doivent ĂȘtre regĂ©nĂ©rĂ©s, en gĂ©nĂ©ral Ă  la demande dans le code.

Configurer des jetons d’accùs d’installation

  1. DĂ©terminez si votre GitHub App doit ĂȘtre publique ou privĂ©e|masquĂ©e. Si votre GitHub App agit uniquement sur les dĂ©pĂŽts au sein de votre organisation, elle peut ĂȘtre privĂ©e.
  2. Déterminez les autorisations dont a besoin votre GitHub App, par exemple, un accÚs en lecture seule au contenu du référentiel.
  3. CrĂ©ez votre GitHub App via la page des paramĂštres de votre organisation. Pour plus d’informations, consultez « CrĂ©ation d’une GitHub App Â».
  4. Notez votre GitHub App id.
  5. GĂ©nĂ©rez et tĂ©lĂ©chargez la clĂ© privĂ©e de votre GitHub App, et conservez-la en toute sĂ©curitĂ©. Pour plus d’informations, consultez GĂ©nĂ©ration d’une clĂ© privĂ©e.
  6. Installez votre GitHub App sur les référentiels sur lesquels elle doit agir, vous pouvez également installer la GitHub App sur tous les référentiels de votre organisation.
  7. Identifiez le installation_id qui reprĂ©sente la connexion entre votre GitHub App et les rĂ©fĂ©rentiels de l’organisation auxquels elle peut accĂ©der. Chaque paire de GitHub App et d’organisations a au plus un seul installation_id. Vous pouvez identifier cet installation_id avec Obtenir une installation d’organisation pour l’application authentifiĂ©e. Cela requiert une authentification en tant que GitHub App Ă  l’aide d’un JWT. Pour plus d’informations, consultez la section Authentification en tant que GitHub App.
  8. GĂ©nĂ©rez un jeton d’accĂšs d’installation en utilisant le point de terminaison d’API REST correspondant, CrĂ©er un jeton d’accĂšs d’installation pour une application. Cela requiert une authentification en tant que GitHub App Ă  l’aide d’un JWT. Pour plus d’informations, consultez les sections Authentification en tant que GitHub App et Authentification en tant qu’installation.
  9. Utilisez ce jeton d’accĂšs d’installation pour interagir avec vos dĂ©pĂŽts, via l’API REST ou l’API GraphQL, ou via un client Git.

Pour plus d’informations, consultez « GĂ©nĂ©ration d’un jeton d’accĂšs d’installation pour une application GitHub Â».

Utilisateurs machines

Si votre serveur doit avoir accĂšs Ă  plusieurs rĂ©fĂ©rentiels, vous pouvez crĂ©er un compte sur GitHub.com et attacher une clĂ© SSH, utilisĂ©e exclusivement pour l’automatisation. Étant donnĂ© que ce compte sur GitHub.com ne sera pas utilisĂ© par un humain, il s’agit d’un utilisateur d’ordinateur. Vous pouvez ajouter l’utilisateur machine comme collaborateur sur un dĂ©pĂŽt personnel (en lui accordant un accĂšs en lecture et en Ă©criture), comme collaborateur externe sur un dĂ©pĂŽt d’organisation (en lui accordant un accĂšs en lecture, en Ă©criture ou d’administrateur) ou l’ajouter Ă  une Ă©quipe avec un accĂšs aux dĂ©pĂŽts dont il a besoin pour l’automatisation (en lui accordant les autorisations de l’équipe).

Conseil

Nos conditions d’utilisation stipulent :

Les comptes inscrits par des « bots Â» ou d’autres mĂ©thodes automatisĂ©es ne sont pas autorisĂ©s.

Cela signifie que vous ne pouvez pas automatiser la création de comptes. Toutefois, si vous voulez créer un utilisateur machine pour automatiser des tùches comme le déploiement de scripts dans votre projet ou organisation, vous pouvez le faire.

Avantages des utilisateurs machine

  • Toute personne ayant accĂšs au dĂ©pĂŽt et au serveur a la possibilitĂ© de dĂ©ployer le projet.
  • Aucun utilisateur (humain) n’a besoin de changer ses paramĂštres SSH locaux.
  • Vous n’avez pas besoin de plusieurs clĂ©s, une par serveur suffit.

Inconvénients des utilisateurs machine

  • Seules les organisations peuvent limiter les utilisateurs machines Ă  l’accĂšs en lecture seule. Les dĂ©pĂŽts personnels accordent toujours aux collaborateurs un accĂšs en lecture/Ă©criture.
  • Les clĂ©s d’utilisateur machine, comme les clĂ©s de dĂ©ploiement, ne sont gĂ©nĂ©ralement pas protĂ©gĂ©es par une phrase secrĂšte.

Configurer des utilisateurs machine

  1. ExĂ©cutez la procĂ©dure ssh-keygen sur votre serveur et attachez la clĂ© publique au compte de l’utilisateur machine.
  2. Donnez au compte de l’utilisateur machine un accĂšs aux dĂ©pĂŽts que vous voulez automatiser. Pour ce faire, vous pouvez ajouter le compte comme collaborateur, comme collaborateur externe ou l’ajouter Ă  une Ă©quipe d’organisation.

Pour aller plus loin