Code Visual Studio demandant toujours des informations d'identification git


219

J'ai commencé à utiliser Visual Studio Code et j'essayais d'enregistrer mon projet de test dans GitHub , mais Visual Studio Code demande toujours mes informations d'identification GitHub .

J'ai installé sur mon PC GitHub Desktop et aussi Git , j'ai déjà couru:

 git config --global credential.helper wincred

mais Visual Studio Code demande toujours les informations d'identification.

De l'aide?

voici mon fichier .gitconfig situé dans le profil utilisateur:

    [filter "lfs"]
    clean = git-lfs clean %f
    smudge = git-lfs smudge %f
    required = true
[user]
    name = ddieppa
[user]
    email = fake@live.com
[credential]
    helper = wincred

Voici les fenêtres contextuelles demandant les informations d'identification:

entrez la description de l'image ici

J'entre mes informations d'identification GitHub dans la fenêtre contextuelle, mais j'obtiens toujours cette erreur dans la fenêtre de sortie Git dans Visual Studio Code :

remote: Anonymous access to ddieppa/LineOfBizApp.git denied.
fatal: Authentication failed for 'https://github.com/ddieppa/LineOfBizApp.git/'

quelle URL GItHub vous utilisez? un HTTP ou GIT (SSH)? Si vous utilisez une URL HTTP, vous devez inclure l'utilisateur et le mot de passe dans l'URL. Vous feriez mieux d'utiliser l'URL GIT et ajoutez votre clé SSH publique dans la liste des clés SSH de l'utilisateur
yorammi

@yorammi Je suis nouveau avec git, j'ai donc installé Github Desktop et Git et j'essaie d'enregistrer mon projet en utilisant Visual Studio Code, donc je ne sais pas ce que je passe. Comment le sais-je?
ddieppa

@ddieppa GitHub Desktop a un moyen de travailler avec une authentification à deux facteurs avec une connexion https. Cependant, cela casse d'autres outils. Comme la réponse l'a dit, vous devez maintenant changer l'URL d'origine de https en ssh.
Lex Li

Réponses:


159

Dernière mise à jour: 05 mars 2019

Après 98 votes positifs, je pense que je dois donner une vraie réponse avec l'explication.

Pourquoi le code VS demande un mot de passe? Parce que VSCode exécute la fonction de récupération automatique, alors que git server n'a aucune information pour autoriser votre identité. Cela arrive quand:

  • Votre git repo a https une URL distante. Oui! Ce type de télécommande vous demandera absolument à chaque fois. Aucune exception ici! (Vous pouvez faire une astuce temporaire pour mettre en cache l'autorisation comme solution ci-dessous, mais ce n'est pas recommandé.)
  • Votre dépôt git a sslune URL distante, MAIS vous n'avez pas copié votre clé publique ssh sur le serveur git. Utilisez ssh-keygenpour générer votre clé et la copier sur le serveur git. Terminé! Cette solution vous aide également à ne plus jamais retaper le mot de passe sur le terminal. Voir une bonne instruction par @Fnatical ici pour la réponse.

La partie mise à jour à la fin de cette réponse ne vous aide pas vraiment du tout. (Cela vous stagne en fait dans votre flux de travail.) Il arrête uniquement les événements dans VSCode et déplace ces événements vers le terminal.

Désolé si cette mauvaise réponse vous affecte depuis très longtemps.

-

la réponse originale (mauvaise)

J'ai trouvé la solution sur le document VSCode :

Astuce: vous devez configurer un assistant d'informations d'identification pour éviter d'être invité à fournir des informations d'identification à chaque fois que VS Code parle à vos télécommandes Git. Si vous ne le faites pas, vous pouvez envisager de désactiver la lecture automatique dans le menu ... pour réduire le nombre d'invites que vous obtenez.

Donc, activez l'assistant d'informations d'identification afin que Git enregistre votre mot de passe en mémoire pendant un certain temps. Par défaut, Git mettra en cache votre mot de passe pendant 15 minutes.

Dans Terminal, entrez les informations suivantes:

git config --global credential.helper cache
# Set git to use the credential memory cache

Pour modifier le délai d'expiration du cache de mot de passe par défaut, entrez les informations suivantes:

git config --global credential.helper 'cache --timeout=3600'
# Set the cache to timeout after 1 hour (setting is in seconds)

MISE À JOUR (si la réponse originale ne fonctionne pas)

J'ai installé VS Code et je l'ai configuré ci-dessus, mais comme @ddieppa l'a dit, cela n'a pas fonctionné pour moi aussi. J'ai donc essayé de trouver une option dans User Setting, et j'ai vu "git.autofetch" = true, définissez maintenant c'est false! Le code VS n'est plus nécessaire pour saisir à nouveau le mot de passe à plusieurs reprises!

Dans le menu, cliquez sur Fichier / Préférences / Paramètres utilisateur Et saisissez-les:

Placez vos paramètres dans ce fichier pour remplacer les paramètres par défaut

{
  "git.autofetch": false
}

2
J'ai essayé ça, mais ça n'a pas marché pour moi, j'utilise même celui-ci: $ git config --global credential.helper wincred
ddieppa

Bien que la solution de récupération automatique arrête le problème de popup continu, elle nécessite toujours la saisie des informations d'identification à chaque push et pull. Si vous utilisez un PC avec http / s, la solution de gestion des informations d'identification ci-dessous fonctionne très bien.
ruttopia

3
les choses ne devraient pas apparaître si vous n'avez pas initié l'action, en particulier les choses demandant des informations d'identification - comment savez-vous que c'est sûr et non une parodie?
Anthony Johnston

7
Soyez prudent avec ce paramètre, s'il vous plaît! Il ne vise pas du tout à vous souvenir de vos informations d'identification. Il s'agit de vous aider automatiquement à git-fetch. Veuillez consulter atlassian.com/git/tutorials/syncing#git-fetch pour plus de détails à ce sujet. En ce qui concerne le stockage de vos informations d'identification, utilisez la commande git config --global credential.helper cache. Jetez un œil à git-scm.com/book/gr/v2/Git-Tools-Credential-Storage pour plus de détails.
reconnaissant

7
Le fait de suggérer que vous désactiviez la fonction de récupération automatique est une bonne option «laissez-moi tranquille» Mais cela revient à dire "Si votre logiciel ne fonctionne pas, arrêtez simplement de l'utiliser." Il est important que les gens réalisent la différence. Je suggérerais que la partie "MISE À JOUR" de cette réponse dise "SI CELA NE FONCTIONNE PAS" à la place, et expliquer que vous pouvez le faire cesser de vous déranger sans vraiment résoudre le problème. La partie de la réponse ci-dessus MISE À JOUR est en fait correcte (au moins, en suivant le lien de documentation qui a fonctionné pour moi)
Don

67

Vous devriez pouvoir définir vos informations d'identification comme ceci:

git remote set-url origin https://<USERNAME>:<PASSWORD>@bitbucket.org/path/to/repo.git

Vous pouvez obtenir l'URL distante comme ceci:

git config --get remote.origin.url


5
Si j'ai le @ dans mon mot de passe, quelle sera l'url?
Suvonkar

C'est vraiment sympa. Une question cependant, où ces informations d'identification sont-elles enregistrées dans le système de fichiers local?
Teoman shipahi

1
Dans le fichier .git \ config.
yohosuff

notez également que <MOT DE PASSE> est facultatif, si vous ne souhaitez pas enregistrer votre mot de passe sur le disque local et que vous souhaitez continuer à y être invité.
Ben Barreth

Vous pouvez également fournir un jeton d'accès personnel à utiliser pour votre mot de passe, de cette façon, vous n'exposez pas le mot de passe de votre compte réel probablement stocké en texte brut. Vous pouvez également supprimer facilement la disposition si vous le souhaitez ou si vous pensez que votre système est perdu ou compromis.
CTS_AE

55

Cela a fonctionné pour moi:
1. Définissez l'hepler des informations d'identification à stocker
$ git config --global credential.helper store
2. puis vérifiez si vous voulez:
$ git config --global credential.helper store

Exemple simple lors de l'utilisation de git bash cité ici (fonctionne uniquement pour le dépôt actuel, utilisez --globalpour tous les dépôts)

$ git config credential.helper store
$ git push http://example.com/repo.git
Username: < type your username >
Password: < type your password >

[plusieurs jours plus tard]
$ git push http://example.com/repo.git
[vos informations d'identification sont utilisées automatiquement]

Fonctionnera également pour VS Code.

Exemple plus détaillé et utilisation avancée ici .

Remarque: le nom d' utilisateur et les mots de passe ne sont pas chiffrés et stockés au format texte brut, utilisez-les uniquement sur votre ordinateur personnel.


2
Je n'ai aucune idée pourquoi ce cache ne voudrait tout simplement pas fonctionner pour moi sur Ubuntu 18.04 et le code VS. storel'a fait.
D. Dan

1
pas très sûr. utilisez plutôt le cache. si votre ordinateur "personnel" est piraté, vos informations d'identification git peuvent également être piratées ..
Hypersoft Systems

1
le cache enregistre les informations d'identification en mémoire, ce n'est pas une solution à long terme. Vous n'aurez pas à entrer le nom d'utilisateur et le mot de passe à chaque fois, mais vous devrez quand même le saisir assez souvent.
Vaibhav Vishal

1
J'aime mieux cette réponse. Je ne veux pas qu'on me demande un nom d'utilisateur / mot de passe chaque fois que je pousse mon code vers l'origine (c'est-à-dire GitLab) en utilisant VS Code
Sean McCarthy

Je soutiens toujours que cette méthode n'est pas sûre. les crédits sont stockés dans le fichier `~ / .git-credentials` qui peut être utilisé abusivement lorsque le système est compromis. Changement mieux httpsà sshet les clés ssh comme alternative.
Mohith7548

21

Les étapes suivantes vous expliquent comment:

  1. Générer des clés SSH (sans phrase secrète **)
  2. Ajoutez la clé publique générée à l'étape 1 à votre référentiel Git
  3. Confirmez que les étapes ci-dessus ont été effectuées avec succès
  4. Faites votre premier commit (sans avoir à fournir un nom d'utilisateur / mot de passe)

** La génération de clés SSH sans phrase secrète n'est pas judicieuse si votre travail est particulièrement sensible.

OS - Fedora 28 | Editeur - VS Code v1.23.0 | Référentiel - Git

Générez des clés SSH:

  • ssh-keygen -t rsa -C "email@goeshere.com"
  • Entrez le fichier dans lequel enregistrer la clé : Appuyez sur Entrée
  • Saisissez la phrase secrète : appuyez sur Entrée
  • Saisissez à nouveau la même phrase secrète : appuyez sur Entrée

Après avoir effectué les étapes ci-dessus, l'emplacement de votre clé publique est affiché dans la fenêtre du terminal. Si l'utilisateur actuellement connecté est «bob», l'emplacement de votre clé publique serait /home/bob/.ssh/id_rsa.pub

Copiez et importez la clé publique dans GitHub:

  • cat /home/bob/.ssh/id_rsa.pub

  • Copiez la clé publique entière qui est maintenant affichée dans votre fenêtre de terminal dans le presse-papiers

  • Accédez à https://github.com et connectez-vous
  • Cliquez sur l'icône utilisateur dans le coin supérieur droit de l'écran et sélectionnez Paramètres
  • Cliquez sur les clés SSH et GPG
  • Cliquez sur Nouvelle clé SSH
  • Saisissez un titre, collez la clé publique copiée dans le presse-papiers au premier point, puis cliquez sur Ajouter une clé SSH

Confirmez les étapes ci-dessus:

  • ssh -T git@github.com

  • yes

  • Salut ! Vous vous êtes authentifié avec succès, mais GitHub ne fournit pas d'accès shell.

Commit / push d'abord sans avoir à entrer un nom d'utilisateur / mot de passe: -touch test.txt

  • git add test.txt

  • git commit- ouvre l'éditeur, saisissez un message et enregistrez le fichier. Si vi est votre éditeur, appuyez sur iune fois le fichier ouvert, entrez un message, appuyez sur esc, puis entrez :xpour enregistrer les modifications.

  • git push

Le seul hoquet que vous pouvez rencontrer est lorsque vous essayez de SSH vers GitHub. Ce lien fournira de l'aide -

Bonne chasse!


20

Essayez d'installer " Git Credential Manager pour Windows " (et suivez les instructions pour configurer le gestionnaire d'informations d'identification ).

Lorsque requis dans une application utilisant Git (par exemple VS Code), il ouvrira "comme par magie " la boîte de dialogue requise pour la saisie des informations d'identification Visual Studio Team Services.


4
Je souhaite qu'il y ait aussi un "Git Credential Manager pour Linux". Oh, attends, je cours ssh-agentdéjà. Mais VS Code semble ignorer cela sous Linux.
wigy

c'est la solution la plus simple pour moi. et ça marche super! merci de l'avoir signalé
dapidmini

20

Tout ce que j'avais à faire était d'exécuter cette commande:

git config --global credential.helper wincred

Ensuite, on m'a demandé deux fois le mot de passe.

La prochaine fois, cela a fonctionné sans me demander de mot de passe.


2
Merci! Problème résolu, et celui-ci aussi !
Jeffrey Roosendaal

4
Sur Ubuntu, utilisez storeplutôt que wincred.
Cees Timmerman du

1
Cela a fonctionné pour moi! Vous pouvez également faire par exemple git config --global credential.helper 'cache --timeout==1209600'pour le faire durer 2 semaines au lieu des 15 minutes par défaut. Source: help.github.com/en/github/using-git/…
Andrew

1
^ Pour en savoir plus, voir ici: git-scm.com/docs/gitcredentials git-scm.com/docs/git-credential-cache git-scm.com/docs/git-credential-store store le stockera en permanence sur le disque. De plus, mon commentaire précédent contient une erreur: ne pas utiliser ==, utiliser =. Trop tard pour éditer.
Andrew

18

Utilisez ssh au lieu de http / https.

Vous devrez définir des clés ssh sur votre machine locale, les télécharger sur votre serveur git et remplacer le formulaire url http://pargit:// et vous pas besoin d'utiliser des mots de passe plus.

Si vous ne pouvez pas utiliser ssh, ajoutez ceci à votre configuration:

[credential "https://example.com"]
    username = me

les documents sont ici .


Utiliser la clé ssh dans github


Suivez simplement ces étapes et vous configurerez votre clé ssh en un rien de temps:

  • Générez une nouvelle clé ssh (ou ignorez cette étape si vous avez déjà une clé)
    ssh-keygen -t rsa -C "your@email"

  • Une fois que vous avez votre clé dans le home/.sshrépertoire (ou Users/<your user>.sshsous Windows), ouvrez-la et copiez le contenu


Comment ajouter la clé sh au compte github?

  • Connectez-vous au compte github
  • Cliquez sur l'éleveur en haut à droite (Paramètres)
    décompte de comptes github
  • Clique sur le SSH keys
    section clé ssh
  • Clique sur le Add ssh key
    Ajouter une clé ssh
  • Collez votre clé et enregistrez

Et vous êtes prêt à partir :-)


4
Vous devez également indiquer clairement quelle est la cause première. Dans mon cas, puisque j'ai activé l'authentification à deux facteurs, SSH est le seul moyen de se connecter aux référentiels. Toute connexion https entraînera une telle invite.
Lex Li

@codeWizard Je ne me souviens pas exactement de ce qui s'est passé mais VS Code fonctionnait bien, je veux dire se connecter au référentiel GitHub sans configuration supplémentaire, je pense que le problème était peut-être que j'ai installé Git après Github Desktop, est-ce possible?
ddieppa

VC peut stocker ses informations d'identification en interne et une fois que vous avez réinstallé / mis à niveau git, la configuration peut avoir été modifiée. Je ne suis pas un utilisateur VC, je suis un gars UNIX donc je ne peux pas le tester sur ma machine.
CodeWizard

3
@codeWizard VS Code est open source et multi-plateforme, vous pouvez l'exécuter sur Windows, MacOS ou Linux :), en travaillant sur la variante ssh et voir ce que j'obtiens
ddieppa

1
Le lien vers la documentation est rompu.
Vishal

14

En général, vous pouvez utiliser les fonctions de stockage des informations d'identification intégrées:

git config --global credential.helper store

Ou, si vous êtes sous Windows, vous pouvez utiliser leur système d'informations d'identification:

git config --global credential.helper wincred

Ou, si vous êtes sous MacOS, vous pouvez utiliser leur système d'informations d'identification:

git config --global credential.helper osxkeychain

La première solution est optimale dans la plupart des situations.


6

Authentification Git automatique . De la v1.45 Release Notes :

Authentification GitHub pour les référentiels GitHub

VS Code dispose désormais d'une authentification GitHub automatique par rapport aux référentiels GitHub. Vous pouvez désormais cloner, extraire, pousser vers et depuis des référentiels publics et privés sans configurer de gestionnaire d'informations d'identification dans votre système. Même les commandes Git invoquées dans le terminal intégré, par exemple git push, sont désormais automatiquement authentifiées sur votre compte GitHub.

Vous pouvez désactiver l'authentification GitHub avec le git.githubAuthenticationparamètre. Vous pouvez également désactiver l'intégration de l'authentification du terminal avec le git.terminalAuthentication paramètre.


Génial! La désactivation de ces deux paramètres sous Linux (Ubuntu 18.04 + KDE Plasma) corrige la gestion des informations d'identification. Ces deux activés étaient prioritaires askpass = /usr/bin/ksshaskpassdans mon .gitconfiget en conséquence, je recevais un nom d'utilisateur et un mot de passe à chaque fois. Cela sera probablement plus voté en tant que rôles de la version 1.45 sur plus de machines.
Andrei Sinitson

4

Pour Windows 10: allez dans le panneau de configuration / Gestionnaire d'informations d'identification / Informations d'identification Windows -> cliquez sur le lien git, -> modifier -> mettre à jour avec un nouveau mot de passe. Cela devrait fonctionner


2

Utilisez une clé SSH sans mot de passe.

C'est peut-être évident pour certains (pas pour moi). Cela ne résout pas non plus le problème si vous avez absolument besoin d'une phrase secrète, mais c'était un compromis décent dans ma situation sur Mac.


2

Après avoir combattu avec quelque chose comme ça pendant un petit moment, je pense avoir trouvé une bonne solution, surtout lorsque j'ai plusieurs comptes à la fois sur GitHub et BitBucket. Cependant pour VSCode, il a finalement fini par le démarrer à partir d'un terminal Git Bash afin qu'il hérite des variables d'environnement de la session bash et qu'il savait quel agent ssh regarder.

Je me rends compte que c'est un vieux post mais j'ai encore vraiment eu du mal à trouver un endroit pour obtenir les informations dont j'avais besoin. De plus, depuis 2017, ssh-agent a la possibilité de vous demander une phrase secrète uniquement lorsque vous essayez d'accéder à un référentiel.

Je mets mes conclusions ici si quelqu'un est intéressé:


1

Suite à cet article :

Vous pouvez simplement définir GIT_SSH env. var. au programme plink.exe de Putty. (Utilisez ensuite pageant.exe comme agent d'authentification.)


1

Résolvez le problème en suivant les étapes.

Logiciels désinstallés Vscode et git et réinstallés les mêmes. Changement de l'URL du clone du référentiel git de ssh en https.


1

J'ai eu un problème similaire dans Visual Studio Code.

J'ai résolu en changeant l'URL distante en https . (dans le fichier .git / config)

[remote "origin"]
    url = https://user@server.com/plesk-git/project.git

et aussi

git config --global credential.helper wincred

tiré à nouveau, une fenêtre contextuelle d'identification Windows est sortie, des problèmes résolus


0

Pour moi, j'avais configuré mon référentiel distant avec une clé SSH mais git ne pouvait pas les trouver car la variable d'environnement HOMEDRIVE était automatiquement définie sur un partage réseau en raison de la stratégie de domaine de mon entreprise. Changer cette variable d'environnement dans mon shell avant le lancement a code .fait que VSCode hérite de la variable d'environnement correcte et n'altère plus d'erreurs de connexion dans la fenêtre de sortie de git.

Maintenant, je dois juste comprendre comment remplacer la stratégie de domaine afin que HOMEDRIVE pointe toujours vers mon c:\users\marvhenrépertoire local qui est l'emplacement par défaut du .sshrépertoire.


0

J'ai réussi à arrêter cela en effectuant les étapes suivantes.

  1. Désinstaller Git Desktop (pas sûr que ce soit nécessaire)
  2. Désinstaller Credentials Manager cd "C:\Program Files\Git\mingw64\libexec\git-core"suivi degit-credential-manager.exe uninstall
  3. Réinitialiser l'aide aux informations d'identification pour utiliser wincred git config --global credential.helper wincred
  4. User VS Code to Push some changes and re-input credentials.

REMARQUE: J'utilisais un jeton d'accès personnel comme mot de passe.


0

J'ai résolu un problème similaire de manière simple:

  1. Aller à CMD ou au terminal
  2. Type git pull origin master . Remplacez «origine» par votre nom de télécommande
  3. Il demandera les informations d'identification. Taper.

C'est tout. J'ai résolu le problème


0

en plus d'ajouter les entrées de configuration ssh ci-dessus

si windows

Set-Service ssh-agent -StartupType Automatic 

dans powershell maintenant, le code vs ne devrait pas inviter ...


0

pour windows 10, appuyez sur windows key type cred et vous devriez voir "Credential Manager" dans le Panneau de configuration, cliquez pour ouvrir, puis supprimez les informations d'identification mises en cache, puis réessayez, il vous demandera la clé de mot de passe de l'ID utilisateur dans le mot de passe correct et vous serez bon .

Je suis arrivé avec moi quand j'ai changé mon mot de passe réseau


0

J'exécute généralement cette commande simple pour changer l'url distante git de https en ssh

git remote set-url origin git@github.com:username/repo-name-here.git
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.