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
- Activez le transfert dâagent localement. Pour plus dâinformations, consultez notre guide sur le transfert dâagent SSH.
- 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
-
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. -
Sur GitHub, accédez à la page principale du référentiel.
-
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.
-
Dans la barre latérale, cliquez sur Clés de déploiement.
-
Cliquez sur Add deploy key (Ajouter une clé de déploiement).
-
Dans le champ « Titre », indiquez un titre.
-
Dans le champ « Clé », collez votre clé publique.
-
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.
-
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
- 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.
- Déterminez les autorisations dont a besoin votre GitHub App, par exemple, un accÚs en lecture seule au contenu du référentiel.
- 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 ».
- Notez votre GitHub App
id
. - 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.
- 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.
- 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 seulinstallation_id
. Vous pouvez identifier cetinstallation_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. - 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.
- 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
- Exécutez la procédure
ssh-keygen
sur votre serveur et attachez la clĂ© publique au compte de lâutilisateur machine. - 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.