Je clone un dépôt git dans un script comme celui-ci:
git clone https://user:[email protected]/name/.git
Cela fonctionne, mais mon nom d'utilisateur et mon mot de passe! sont maintenant stockés dans l'URL d'origine dans .git/config
.
Comment puis-je empêcher cela, mais toujours le faire dans un script (donc pas de saisie manuelle de mot de passe)?
git remote set-url origin https://host.com/name/.git
Réponses:
La méthode que j'utilise est d'utiliser réellement un
git pull
au lieu d'un clone. Le script ressemblerait à:Cela ne stockera pas votre nom d'utilisateur ou votre mot de passe dans
.git/config
. Cependant, à moins que d'autres étapes ne soient prises, le nom d'utilisateur et le mot de passe en texte brut seront visibles pendant que le processus s'exécute à partir de commandes qui montrent les processus en cours (par exempleps
).Une autre suggestion que je ferais (si vous ne pouvez pas utiliser ssh) est d'utiliser un jeton OAuth au lieu d'un nom d'utilisateur / mot de passe en clair car il est légèrement plus sécurisé. Vous pouvez générer un jeton OAuth à partir des paramètres de votre profil: https://github.com/settings/tokens .
Ensuite, en utilisant ce jeton, la commande pull serait
la source
ps
pendant l'exécution du pull (au moins à moins que vous n'ayez empêché les utilisateurs de voir les processus des autres)IMO, la meilleure solution consiste à utiliser un
GIT_ASKPASS
assistant personnalisé et à fournir le mot de passe comme une autre variable d'environnement. Ainsi, par exemple, créez un fichiergit-askpass-helper.sh
comme:puis exécutez
git clone https://username@hostname/repo
avec les variables d'environnementGIT_ASKPASS=/path/to/git-askpass-helper.sh
etGIT_PASSWORD=nuclearlaunchcodes
.Cela a l'avantage que le mot de passe ne sera pas également visible dans la liste des processus.
la source
git pull
solution et vous permettrait de stocker le mot de passe en clair comme secret dans l'outil de déploiement automatisé de votre choix.Vous pouvez saisir vos identifiants de connexion dans votre
~/.netrc
fichier. Quelque chose dans le sens de:Assurez-vous simplement de chmoder ce fichier à 600. Si vous utilisez Windows, le lien suivant peut être utile: https://stackoverflow.com/questions/6031214/git-how-to-use-netrc-file-on- windows-to-save-user-and-password
Personnellement, j'ai tendance à utiliser les clés SSH à des fins d'authentification (si vous êtes autorisé, bien sûr).
la source
Après avoir parcouru des dizaines de publications SO, de blogs, etc., j'ai essayé toutes les méthodes, et c'est ce que j'ai trouvé. Il couvre TOUT.
Voir la feuille de sécurité des informations d'identification et des packages privés Git
Ce sont tous les moyens et outils par lesquels vous pouvez authentifier git en toute sécurité pour cloner un référentiel sans invite de mot de passe interactif .
Meilleures options pour aucun stockage de texte en clair
D'après ce qui est demandé ici, les clés SSH
GIT_ASKPASS
ou l'git credential store
utilisation du gestionnaire de porte-clés du système d'exploitation peuvent être le meilleur choix.Étant donné que GIT_ASKPASS est probablement le moins bien compris des 3, je vais le détailler ici - et les autres sont dans la feuille de triche.
GIT_ASKPASS
Comment créer un
GIT_ASKPASS
script:Comment l'utiliser:
Le script reçoit stdin sous la forme de:
Le script reçoit des Git ENV tels que:
Plus de détails dans le cheatsheet .
la source