web-dev-qa-db-fra.com

Git demande un nom d'utilisateur chaque fois que j'appuie

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.

463
RanRag

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

768

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]
133
user701648

Authentification permanente avec les référentiels Git

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
86
Jay Patel

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"
28
Lukasz Czerwinski

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]
25
Daniel Lerch

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
25
Ben

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")

19
Alan De Smet

Assurez-vous que vous utilisez SSH au lieu de http. Vérifiez cette SO réponse.

10
gkris

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>
6
Yuvi

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.

5
Languoguang

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é).

5
Layer8Err

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).

Comment générer SSH pour Github

4
Hazarapet Tunanyan

git config --global credential.helper cache

2
Kai Wang

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
2
Simpler
  1. $ git config credential.helper store

  2. $ git Push/push https://github.com/xxx.git

  3. Ensuite, entrez votre nom d'utilisateur et votre mot de passe.

  4. Terminé
1
Stephen Tun Aung

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
0
ManoDestra

Méthode rapide

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é.

0
Aominé