La seule raison, illustrée par la solution de contournement à laquelle vous faites référence (création d'un seul utilisateur "build", ou partage du même utilisateur "build"), c'est qu'il n'y a pas d'autre solution. id_rsa.REPONAME.pub
par repo) est :
éviter le partage des clés publiques/privées pour différents utilisateurs
Même si ce n'est pas le cas dans votre situation (construction de plusieurs projets), le fait de permettre la réutilisation de la même clé ssh ouvrirait la possibilité d'utiliser deux clés ssh. différents utilisateurs de partager la même clé ssh, ce qui irait à l'encontre de l'objectif de la authentification objectif.
Moyens d'authentification :
"utiliser une certaine clé ssh devrait impliquer que vous êtes supposé savoir qui l'utilise".
Cependant, comme indiqué dans jtlindsey 's réponse Si l'on se réfère à l'histoire de l'Union européenne, il s'agit moins d'une question d'authentification, d'identité ou de bonne politique que d'une question d'" identité ". rôle " que vous attachez à ces clés. (rôle pour déployer un certain référentiel).
Comme indiqué dans " Pourquoi je ne peux pas utiliser une clé ssh sur plusieurs repo github ? " par tkeeler :
Ce flux de travail devient un problème lorsqu'on utilise des systèmes automatisés et des submodules git.
Vous ne pouvez pas utiliser la même clé de déploiement dans plus d'un repo, donc la solution de contournement consiste à ajouter cette clé à leur compte utilisateur (ou à un compte machine dédié).
En choisissant la voie de la moindre résistance, la plupart des utilisateurs l'ajouteront à leur propre compte, ce qui entraînera un risque accru pour la sécurité.
GitHub devrait plutôt laisser l'utilisateur choisir et assumer le risque sur une base par dépôt.
La page GitHub " Gestion des clés de déploiement " détaille les différents comptes utilisant ssh :
-
Transfert d'agent SSH : Le transfert d'agent utilise les clés SSH déjà configurées sur votre machine de développement locale lorsque vous vous connectez en SSH à votre serveur et exécutez des commandes git.
Vous pouvez sélectivement laisser les serveurs distants accéder à votre ssh-agent local comme s'il était exécuté sur le serveur.
Il n'est donc pas nécessaire de répliquer votre clé privée sur le serveur.
-
Utilisateurs de machines (c'est la stratégie du "compte factice") Attachez la clé à un compte utilisateur. Comme ce compte ne sera pas utilisé par un humain, on l'appelle un utilisateur machine.
Vous traiteriez cet utilisateur de la même manière qu'un humain, en attachant la clé au compte utilisateur de la machine comme s'il s'agissait d'un compte normal.
Accordez au collaborateur du compte ou à l'équipe l'accès aux dépôts auxquels il doit accéder.
Donc une clé privée associée à un "utilisateur machine", une par serveur.
( DHa souligne dans les commentaires à un nombre limite de clés de déploiement, et le fait que vous ne pouvez avoir qu'un seul compte utilisateur de machine)
-
Déployer la clé (une par repo GitHub) Clé SSH stockée sur le serveur et donnant accès à un seul repo sur GitHub.
Cette clé est attachée directement au repo plutôt qu'à un compte utilisateur. .
Au lieu d'aller dans les paramètres de votre compte, allez sur la page d'administration du repo cible.
Aller à " Deploy Keys
"et cliquez sur " Add deploy key
". Collez la clé publique et soumettez.
Cette fois, la clé ssh n'est pas attachée à un utilisateur (pour lequel vous pourriez accorder l'accès à plusieurs repo), mais à un seul repo.
Accorder l'accès ssh pour plusieurs repo serait l'équivalent d'un "utilisateur machine".
En termes de authentification :
- l'utilisation de la même clé pour plusieurs dépôts est acceptable si elle est faite par un utilisateur (qui a ladite clé associée à son compte)
- utiliser la même clé pour plusieurs repo n'est PAS acceptable lorsque la clé est attachée à un repo, parce que vous ne le savez pas du tout qui accéder à quoi.
Cela diffère de l'"utilisateur machine" où un "utilisateur" est déclaré comme collaborateur pour de nombreux repo.
Ici (touche Déployer), il n'y a pas de "collaborateur" il suffit d'un accès direct par ssh au repo.
Yusuf Bhabhrawala illustre davantage cette limitation du modèle dans les commentaires :
Considérez ces cas d'utilisation très plausibles - un projet python utilisant un module pip privé ou un projet node utilisant un paquet npm privé - tous deux provenant d'un autre dépôt de la même organisation.
Actuellement, il n'y a aucun moyen de déployer ce cas d'utilisation très simple en utilisant une clé de déploiement ou une clé de compte (qui expose trop d'autres dépôts).
Et Chris Stenkamp fait remarquer à " Comment découvrir où ' pip install git+ssh://...
cherche les clés ssh ? ", qui consiste à fixer le GIT_SSH_COMMAND
variable d'environnement.