Chaque fois que j'essaie de pousser dans mon dépôt, Git demande les deux username & password
.
Je n'ai pas de problème à ressaisir mon mot de passe à chaque fois mais le problème est de saisir un nom d'utilisateur. J'utilise https
pour cloner mon référentiel.
Alors, comment puis-je configurer git pour qu'il ne demande pas username
sur chaque git Push
.
Je suis nouveau sur Linux mais IIRC dans Windows git Push
ne demande que le mot de passe.
Edit (par @ dk14 comme suggéré par les modérateurs et les commentaires)
AVERTISSEMENT: si vous utilisez credential.helper store
dans la réponse, votre mot de passe sera stocké de manière totalement non chiffrée ("tel quel") à ~/.git-credentials
. Veuillez consulter la section commentaires ci-dessous ou les réponses de la section "Lié", en particulier si votre employeur a une tolérance zéro pour les problèmes de sécurité.
Justification: l'approche décrite dans la réponse pourrait introduire une vulnérabilité majeure, en particulier pour les entreprises exploitant des données financières privées. Combiné à des problèmes de sécurité mineurs (souvent présents dans ce type de projets) ou à une ingénierie sociale minimale, il permet de détourner la plupart des informations d'identification sur le réseau du projet, car l'emplacement du mot de passe "nu" est connu à l'avance. Cela inclut éventuellement des informations d'identification donnant un accès partiel à l'environnement de production, ce qui permet donc d'éliminer de facto les droits d'accès des attaquants [internes] et de dissimuler dans une certaine mesure l'identité d'un pirate informatique.
En remarque (pour étendre cet avertissement, par exemple), plusieurs grands projets d’entreprise semblent avoir ce problème bien qu’ils fournissent des environnements virtuels sécurisés aux employés ... En gros, mon appel à me débarrasser de https
auth a été rejeté - mais , à l'époque, je ne pensais pas qu'un exploit (comme cat ~/git.credentials | curl ...
) pouvait être injecté dans des scripts auxiliaires bash/build hébergés sur Git afin de le diffuser sur les utilisateurs, peut-être même de manière anonyme (certains étant automatiquement synchronisés). Pour être juste, ce hack ne donnerait généralement pas accès (au moins) directement aux systèmes critiques. Sauf si Git-credentials === corporate-email-credentials
.
Éditer # 2 (par @ dk14):
Même s'il est accepté, il ne répond pas à la question de l'OP lui-même concernant l'omission d'un nom d'utilisateur uniquement (pas de mot de passe). Pour les lecteurs avec ce problème exact, le { réponse de @ grawity pourrait s'avérer utile.
Réponse originale (par @Alexander Zhu):
Vous pouvez stocker vos informations d'identification à l'aide de la commande suivante
$ git config credential.helper store
$ git Push http://example.com/repo.git
Username: <type your username>
Password: <type your password>
Aussi je vous suggère de lire$ git help credentials
Vous pouvez accomplir cela dans le fichier .git/config
de votre référentiel local. Ce fichier contient une section appelée "remote" avec une entrée appelée "url". L'entrée 'url' devrait contenir le lien https du référentiel dont vous parlez.
Lorsque vous préfixez l'URL 'hôte avec votre nom d'utilisateur, git
ne devrait plus vous demander votre nom d'utilisateur. Voici un exemple:
url = https://[email protected]
Exécutez la commande suivante pour activer la mise en cache des informations d'identification:
$ git config credential.helper store
$ git Push https://github.com/repo.git
Username for 'https://github.com': <USERNAME>
Password for 'https://[email protected]': <PASSWORD>
Utiliser devrait également spécifier la mise en cache expire
git config --global credential.helper "cache --timeout 7200"
Après avoir activé la mise en cache des informations d'identification, il sera mis en cache pendant 7200 secondes (2 heures) .
Lire les informations d'identification Docs
$ git help credentials
Ajoutez de nouvelles clés SSH comme décrit dans cet article sur GitHub .
Si Git vous demande toujours un nom d'utilisateur et un mot de passe, essayez de remplacer https://github.com/
par [email protected]:
dans l'URL distante:
$ git config remote.Origin.url
https://github.com/dir/repo.git
$ git config remote.Origin.url "[email protected]:dir/repo.git"
Si vous utilisez https au lieu de ssh, vous pouvez modifier "url" dans .git/config
comme dit user701648, mais si vous le souhaitez, vous pouvez également ajouter le mot de passe:
url = https://username:[email protected]
Le moyen le plus simple que j'ai trouvé était avec cette commande:
git config --global credential.https://github.com.username <your_username>
Cela fonctionne site par site et modifie votre configuration globale git.
Pour voir les changements, utilisez:
git config --global --edit
Vous pouvez définir votre nom d'utilisateur pour tous les référentiels d'un site donné en insérant quelque chose comme ceci dans votre fichier de configuration Git. Vous voudrez changer " https://example.com " et "moi" par l'URL actuelle et votre nom d'utilisateur.
[credential "https://example.com"]
username = me
(Ceci est directement à partir de "informations d'identification de git help")
Assurez-vous que vous utilisez SSH au lieu de http. Vérifiez cette SO réponse.
Outre la réponse de l'utilisateur701648, vous pouvez stocker vos informations d'identification dans votre dossier de départ (global pour tous les projets), au lieu du dossier de projet à l'aide de la commande suivante
$ git config --global credential.helper store
$ git Push http://example.com/repo.git
Username: <type your username>
Password: <type your password>
Quand je ne git que tirer - git tirer Origine xxx - Git demande à la fois le nom d'utilisateur et le mot de passe.
git config credential.helper store
Ça marche.
Changer le repo cloné fonctionne:
git remote set-url Origin [email protected]:gitusername/projectname.git
L'utilisation des informations d'identification en cache fonctionne, et la définition du délai d'expiration rend les choses moins ennuyeuses. Si vous utilisez l'assistant d'informations d'identification Windows, cette méthode devrait être la plus simple (surtout si SSH est bloqué).
Si vous utilisez la version SSH, vous ne rencontrerez aucun problème de mot de passe. Une seule fois, vous générez la clé SSH, pour indiquer à git que ce PC fonctionnera avec ce compte github et ne me demandez plus jamais d’accès (pour ce pc).
git config --global credential.helper cache
Le moyen le plus simple consiste à créer un fichier ~/.netrc
avec le contenu suivant:
machine github.com
login YOUR_GITHUB_USERNAME
password YOUR_GITHUB_PASSWORD
(comme indiqué ici: https://Gist.github.com/ahoward/2885020 )
Vous pouvez même fermer les autorisations sur ce fichier afin que personne ne puisse lire votre mot de passe en tapant:
chmod 600 ~/.netrc
$ git config credential.helper store
$ git Push/push https://github.com/xxx.git
Ensuite, entrez votre nom d'utilisateur et votre mot de passe.
Pour éviter de saisir un nom d'utilisateur, tout en étant invité à saisir un mot de passe, vous pouvez simplement cloner votre référentiel, y compris le nom d'utilisateur:
git clone [email protected]/my_repo.git
récupère l'URL de votre git quand vous travaillez dans le répertoire:
git config remote.Origin.url
puis :
git config credential.helper store
git Push "url of your git"
demandera le nom d'utilisateur et le mot de passe une dernière fois
terminé.