Visual Studio Code richiede sempre le credenziali git


241

Ho iniziato a usare Visual Studio Code e stavo cercando di salvare il mio progetto di test in GitHub , ma Visual Studio Code richiede sempre le mie credenziali GitHub .

Ho installato sul mio PC GitHub Desktop e anche Git , ho già eseguito:

 git config --global credential.helper wincred

ma Visual Studio Code chiede ancora le credenziali.

Qualsiasi aiuto?

ecco il mio file .gitconfig che si trova nel profilo utente folfer:

    [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

Ecco le finestre popup che richiedono le credenziali:

inserisci qui la descrizione dell'immagine

Inserisco le mie credenziali GitHub nel popup, ma ricevo ancora questo errore nella finestra di output di Git in Visual Studio Code :

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

quale URL di GItHub stai utilizzando? un HTTP o GIT (SSH)? Se utilizzi un URL HTTP, devi includere l'utente e la password nell'URL. È meglio utilizzare l'URL GIT e aggiungere la chiave SSH pubblica nell'elenco delle chiavi SSH dell'utente
yorammi

@yorammi Sono appena arrivato a lavorare con git, quindi ho installato Github Desktop e Git e ho provato a salvare il mio progetto utilizzando Visual Studio Code, quindi non so cosa sto passando. Come lo so?
ddieppa

@ddieppa GitHub Desktop ha un modo per lavorare con l'autenticazione a due fattori con una connessione https. Tuttavia, ciò rompe altri strumenti. Come ha detto la risposta, ora è necessario modificare l'URL di origine da https a ssh.
Lex Li

Risposte:


166

Ultimo aggiornamento: 05 marzo 2019

Dopo 98 voti positivi, penso di dover dare una risposta vera con la spiegazione.

Perché il codice VS richiede una password? Perché VSCode esegue la funzione di recupero automatico, mentre il server git non ha alcuna informazione per autorizzare la tua identità. Succede quando:

  • Il tuo repository git ha httpsun URL remoto. Sì! Questo tipo di telecomando te lo chiederà assolutamente ogni volta. Nessuna eccezione qui! (Puoi eseguire un trucco temporaneo per memorizzare nella cache l'autorizzazione come soluzione di seguito, ma non è consigliabile.)
  • Il tuo repository git ha sslun URL remoto, MA non hai copiato la tua chiave pubblica ssh sul server git. Utilizzare ssh-keygenper generare la chiave e copiarla sul server git. Fatto! Questa soluzione ti aiuta anche a non ridigitare mai più la password sul terminale. Vedi una buona istruzione di @Fnatical qui per la risposta.

La parte aggiornata alla fine di questa risposta non ti aiuta affatto. (In realtà ti rende stagnante nel tuo flusso di lavoro.) Blocca solo le cose che accadono in VSCode e sposta queste cose sul terminale.

Scusa se questa cattiva risposta ti ha colpito per molto, molto tempo.

-

la risposta originale (cattiva)

Ho trovato la soluzione sul documento VSCode :

Suggerimento: è necessario configurare un supporto per le credenziali per evitare di ricevere le credenziali ogni volta che VS Code parla con i telecomandi Git. Se non lo fai, potresti prendere in considerazione la possibilità di disabilitare il recupero automatico nel menu ... per ridurre il numero di richieste che ricevi.

Quindi, attiva l'helper delle credenziali in modo che Git salvi la tua password in memoria per un po 'di tempo. Per impostazione predefinita, Git memorizzerà la tua password nella cache per 15 minuti.

In Terminal, inserisci quanto segue:

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

Per modificare il timeout predefinito della cache della password, immettere quanto segue:

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

AGGIORNAMENTO (Se la risposta originale non funziona)

Ho installato VS Code e la configurazione stessa sopra, ma come ha detto @ddieppa, non ha funzionato anche per me. Quindi ho provato a trovare un'opzione in Impostazioni utente e ho visto "git.autofetch" = true, ora impostalo false! VS Code non è più necessario per inserire nuovamente la password ripetutamente!

Nel menu, fai clic su File / Preferenze / Impostazioni utente e digita questi:

Inserisci le tue impostazioni in questo file per sovrascrivere le impostazioni predefinite

{
  "git.autofetch": false
}

2
L'ho provato, ma non ha funzionato per me, lo uso anche: $ git config --global credential.helper wincred
ddieppa

Sebbene la soluzione di recupero automatico interrompa il problema del popup costante, richiede comunque l'immissione di credenziali a ogni push and pull. Se si utilizza un PC con http / s, la soluzione di gestione delle credenziali di seguito funziona alla grande.
ruttopia

3
le cose non dovrebbero apparire se non hai avviato l'azione, in particolare le cose che richiedono le credenziali: come fai a sapere che è sicuro e non uno spoof?
Anthony Johnston

7
Stai attento con quell'impostazione, per favore! Non ha lo scopo di aiutarti a ricordare le tue credenziali. Si tratta di aiutarti automaticamente a git-fetch. Si prega di dare un'occhiata a atlassian.com/git/tutorials/syncing#git-fetch per maggiori dettagli su questo. Per quanto riguarda la memorizzazione delle tue credenziali, usa il comando git config --global credential.helper cache. Dai un'occhiata a git-scm.com/book/gr/v2/Git-Tools-Credential-Storage per maggiori dettagli.
Grato

7
Suggerire di disattivare il recupero automatico va bene come opzione "lasciami in pace". Ma è come dire "Se il tuo software non funziona, smetti di usarlo". È importante che le persone si rendano conto della differenza. Suggerirei che la parte "AGGIORNAMENTO" di questa risposta dica invece "SE NON FUNZIONA" e spiegherei che puoi fare in modo che smetta di infastidirti senza effettivamente risolvere il problema. La parte della risposta sopra UPDATE è effettivamente corretta (almeno, seguendo il link della documentazione ha funzionato per me)
Don

72

Dovresti essere in grado di impostare le tue credenziali in questo modo:

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

Puoi ottenere l'URL remoto in questo modo:

git config --get remote.origin.url

7
Se ho la @ nella mia password, quale sarà l'URL?
Suvonkar

Questo è davvero un bel modo. Una domanda però, dove vengono salvate quelle credenziali nel file system locale?
Teoman shipahi

1
Nel file .git \ config.
yohosuff

1
si noti inoltre che <PASSWORD> è opzionale, se non si desidera salvare la password sul disco locale e si desidera continuare a ricevere la richiesta.
Ben Barreth

1
@Suvonkar, avresti potuto usare% 40 invece di @ nella tua password.
Mayur Saner,

64

Questo ha funzionato per me:
1. Imposta la credential hepler per memorizzare
$ git config --global credential.helper store
2. quindi verifica se vuoi:
$ git config --global credential.helper store

Semplice esempio quando si utilizza git bash citato da Here (funziona solo per il repository corrente, da utilizzare --globalper tutti i repository )

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

[diversi giorni dopo]
$ git push http://example.com/repo.git
[le tue credenziali vengono utilizzate automaticamente]

Funzionerà anche per VS Code.

Esempio più dettagliato e utilizzo avanzato qui .

Nota: nome utente e password non sono crittografati e archiviati in formato di testo normale, quindi utilizzali solo sul tuo personal computer.


2
Non ho idea del motivo per cui questa cache non vorrebbe funzionare per me su Ubuntu 18.04 e vs code. storefatto.
D. Dan

1
molto non sicuro. usa invece la cache. se il tuo computer "personale" viene violato, anche le tue credenziali git potrebbero essere violate ..
Hypersoft Systems

1
la cache salva le credenziali in memoria, non è una soluzione a lungo termine. Non dovrai inserire nome utente e password ogni volta, ma dovrai comunque inserirli abbastanza spesso.
Vaibhav Vishal

1
Mi piace questa risposta la migliore. Non voglio che mi venga richiesto di inserire nome utente / password ogni volta che inserisco il mio codice nell'origine (ad esempio GitLab) utilizzando VS Code
Sean McCarthy

Continuo a sostenere che questo metodo non è sicuro. le credenziali sono memorizzate nel file `~ / .git-credentials` che può essere abusato quando il sistema è compromesso. Meglio cambiare httpsper sshe chiavi usare SSH come alternativa.
Mohith7548

22

I passaggi seguenti illustrano come:

  1. Genera chiavi SSH (senza passphrase **)
  2. Aggiungi la chiave pubblica generata nel passaggio 1 al tuo repository Git
  3. Conferma che i passaggi precedenti sono stati completati correttamente
  4. Effettua il tuo primo commit (senza dover fornire un nome utente / password)

** Generare chiavi SSH senza una passphrase non è saggio se il tuo lavoro è particolarmente delicato.

OS - Fedora 28 | Editor - VS Code v1.23.0 | Repository - Git

Genera chiavi SSH:

  • ssh-keygen -t rsa -C "email@goeshere.com"
  • Immettere il file in cui salvare la chiave : premere Invio
  • Immettere la passphrase : premere Invio
  • Immettere di nuovo la stessa passphrase : premere Invio

Dopo aver completato i passaggi precedenti, la posizione della tua chiave pubblica viene visualizzata nella finestra del terminale. Se l'utente attualmente connesso è 'bob', la posizione della tua chiave pubblica sarebbe /home/bob/.ssh/id_rsa.pub

Copia e importa la chiave pubblica su GitHub:

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

  • Copia l'intera chiave pubblica che è ora visualizzata nella finestra del tuo terminale negli appunti

  • Vai su https://github.com e accedi
  • Fare clic sull'icona dell'utente nell'angolo in alto a destra dello schermo e selezionare Impostazioni
  • Fai clic su Chiavi SSH e GPG
  • Fare clic su Nuova chiave SSH
  • Immettere un titolo, incollare la chiave pubblica copiata negli appunti nel primo punto elenco e fare clic su Aggiungi chiave SSH

Conferma i passaggi precedenti:

  • ssh -T git@github.com

  • yes

  • Ciao ! Ti sei autenticato con successo, ma GitHub non fornisce l'accesso alla shell.

Primo commit / push senza dover inserire un nome utente / password: -touch test.txt

  • git add test.txt

  • git commit- apre l'editor, inserisci un messaggio e salva il file. Se il tuo editor è vi, premi iuna volta aperto il file, inserisci un messaggio, premi esc, quindi Invio :xper salvare le modifiche.

  • git push

L'unico inconveniente che potresti incontrare è quando tenti di accedere a SSH su GitHub. Questo collegamento fornirà assistenza -

Buona caccia!


22

Tutto quello che dovevo fare era eseguire questo comando:

git config --global credential.helper wincred

Quindi mi è stata richiesta la password due volte.

La prossima volta ha funzionato senza chiedermi la password.


2
Grazie! Problema risolto, e anche questo !
Jeffrey Roosendaal

4
Su Ubuntu, usa storeinvece di wincred.
Cees Timmerman

1
Questo ha funzionato per me! Puoi anche fare ad esempio git config --global credential.helper 'cache --timeout==1209600'per farlo durare per 2 settimane invece dei 15 minuti predefiniti. Fonte: help.github.com/en/github/using-git/…
Andrew

1
^ Per ulteriori informazioni, vedere qui: git-scm.com/docs/gitcredentials git-scm.com/docs/git-credential-cache git-scm.com/docs/git-credential-store store lo memorizzerà permanentemente sul disco. Inoltre, il mio commento precedente ha un errore: non usare ==, usa =. Troppo tardi per modificare.
Andrew

21

Prova a installare " Git Credential Manager per Windows " (e segui le istruzioni per configurare il gestore delle credenziali ).

Quando richiesto all'interno di un'app che utilizza Git (ad esempio VS Code), aprirà " magicamente " la finestra di dialogo richiesta per l'immissione delle credenziali di Visual Studio Team Services.


4
Vorrei che ci fosse anche un "Git Credential Manager per Linux". Oh, aspetta, sto ssh-agentgià correndo . Ma VS Code sembra ignorarlo su Linux.
wigy

questa è la soluzione più semplice per me. e funziona benissimo! grazie per
averlo

18

Usa ssh invece di http / https.

Dovrai impostare le chiavi ssh sulla tua macchina locale, caricarle sul tuo server git e sostituire il modulo dell'URL http://in git://e non avrai più bisogno di usare le password.

Se non puoi usare ssh, aggiungilo alla tua configurazione:

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

i documenti sono qui .


Utilizzo della chiave ssh in GitHub


Segui semplicemente questi passaggi e imposterai la tua chiave ssh in pochissimo tempo:

  • Genera una nuova chiave ssh (o salta questo passaggio se hai già una chiave)
    ssh-keygen -t rsa -C "your@email"

  • Una volta impostata la chiave nella home/.sshdirectory (o Users/<your user>.sshin Windows), aprila e copia il contenuto


Come aggiungere la chiave sh all'account GitHub?

  • Accedi all'account GitHub
  • Fare clic sull'allevatore in alto a destra (Impostazioni)
    impostazioni dell'account GitHub
  • Clicca sul SSH keys
    sezione chiave ssh
  • Clicca sul Add ssh key
    Aggiungi la chiave ssh
  • Incolla la tua chiave e salva

E siete tutti pronti per partire :-)


4
Dovresti anche chiarire qual è la causa principale. Nel mio caso, poiché ho abilitato l'autenticazione a due fattori, SSH è l'unico modo per connettersi ai repository. Qualsiasi connessione https porterà a tale richiesta.
Lex Li

@codeWizard non ricordo esattamente cosa sia successo ma VS Code funzionava bene, intendo collegarmi al repository GitHub senza alcuna configurazione aggiuntiva, penso che forse il problema era che ho installato Git dopo Github Desktop, potrebbe essere possibile?
ddieppa

VC potrebbe memorizzare le proprie credenziali internamente e una volta reinstallato / aggiornato git, la configurazione potrebbe essere stata modificata. Non sono un utente VC, sono un ragazzo UNIX, quindi non posso testarlo sulla mia macchina.
CodeWizard

3
@codeWizard VS Code è open source e multipiattaforma, puoi eseguirlo su Windows, MacOS o Linux :), lavorando sulla variante ssh e guarda cosa ottengo
ddieppa

1
Il collegamento alla documentazione è interrotto.
Vishal

16

In generale, è possibile utilizzare le strutture di archiviazione delle credenziali integrate:

git config --global credential.helper store

Oppure, se sei su Windows, puoi utilizzare il loro sistema di credenziali:

git config --global credential.helper wincred

Oppure, se sei su MacOS, puoi utilizzare il loro sistema di credenziali:

git config --global credential.helper osxkeychain

La prima soluzione è ottimale nella maggior parte delle situazioni.


9

Autenticazione Git automatica . Dalle note di rilascio v1.45 :

Autenticazione GitHub per i repository GitHub

VS Code ora dispone dell'autenticazione GitHub automatica nei repository GitHub. Ora puoi clonare, estrarre, eseguire il push da e verso repository pubblici e privati ​​senza configurare alcun gestore di credenziali nel tuo sistema. Anche i comandi Git richiamati nel terminale integrato, ad esempio git push, vengono ora autenticati automaticamente sul tuo account GitHub.

È possibile disabilitare l'autenticazione GitHub con l' git.githubAuthenticationimpostazione. È inoltre possibile disabilitare l'integrazione dell'autenticazione del terminale con l' git.terminalAuthentication impostazione.


Grande! La disabilitazione di queste due impostazioni su Linux (Ubuntu 18.04 + KDE Plasma) risolve la gestione delle credenziali. Questi due abilitati stavano sovrascrivendo askpass = /usr/bin/ksshaskpassnel mio .gitconfige di conseguenza mi venivano chiesti nome utente e password ogni volta. Questo probabilmente verrà votato di più quando la versione 1.45 sarà disponibile su più macchine.
Andrei Sinitson,

5

Per Windows 10: vai al pannello di controllo / Gestione credenziali / Credenziali di Windows -> fai clic sul collegamento git, -> modifica -> aggiorna alla nuova password. Dovrebbe funzionare


A-ha! Un altro caso in cui una password scaduta / reimpostata causa problemi misteriosi e gli utenti sprecano mezza giornata. Grazie!
underscore_d

2

Utilizza una chiave SSH senza passphrase.

Forse questo è ovvio per alcuni (non lo era per me). Inoltre non risolve il problema se hai assolutamente bisogno di una passphrase, ma questo è stato un discreto compromesso nella mia situazione su Mac.


2

Dopo aver combattuto con qualcosa di simile per un po ', penso di aver trovato una buona soluzione, soprattutto quando si hanno più account su GitHub e BitBucket. Tuttavia per VSCode, alla fine è finito per avviarlo da un terminale Git Bash in modo che ereditasse le variabili d'ambiente dalla sessione bash e sapesse quale ssh-agent guardare.

Mi rendo conto che questo è un vecchio post ma ho ancora davvero faticato a trovare un posto per ottenere le informazioni di cui avevo bisogno. Inoltre dal 2017, ssh-agent ha la possibilità di richiedere una passphrase solo quando si tenta di accedere a un repository.

Metto le mie scoperte qui se qualcuno è interessato:


1

A seguito di quell'articolo :

Puoi semplicemente impostare GIT_SSH env. var. al programma plink.exe di Putty. (Quindi usa pageant.exe come agente di autenticazione)


1

Risolvi il problema seguendo i passaggi.

Software disinstallati Vscode e git e reinstallati gli stessi. Modificato l'URL del clone del repository git da ssh a https.


1

Ho avuto un problema simile in Visual Studio Code.

Ho risolto cambiando l'URL remoto in https . (nel file .git / config)

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

e anche

git config --global credential.helper wincred

tirato di nuovo, è uscito il popup delle credenziali di Windows, i problemi risolti.


1

Di solito eseguo questo semplice comando per cambiare l'URL remoto di git da https a ssh

git remote set-url origin git@github.com:username/repo-name-here.git

0

Per me avevo configurato il mio repository remoto con una chiave SSH ma git non riusciva a trovarli perché la variabile di ambiente HOMEDRIVE veniva automaticamente impostata su una condivisione di rete a causa della politica di dominio della mia azienda. La modifica di quella variabile di ambiente nella mia shell prima del lancio ha fatto code .sì che VSCode ereditasse la variabile di ambiente corretta e non violava più errori di connessione nella finestra di output di git.

Ora devo solo capire come sovrascrivere la politica del dominio in modo che HOMEDRIVE punti sempre alla mia c:\users\marvhendirectory locale che è la posizione predefinita per la .sshdirectory.


0

Sono riuscito a fermarlo eseguendo i seguenti passaggi.

  1. Disinstalla Git Desktop (non sono sicuro che sia necessario)
  2. Disinstallare Credentials Manager cd "C:\Program Files\Git\mingw64\libexec\git-core"seguito dagit-credential-manager.exe uninstall
  3. Reimposta l'helper delle credenziali per utilizzare wincred git config --global credential.helper wincred
  4. Codice VS utente per eseguire il push di alcune modifiche e reinserire le credenziali.

NOTA: stavo utilizzando un token di accesso personale come password.


0

Ho risolto un problema simile in modo semplice:

  1. Vai a CMD o Terminal
  2. Tipo git pull origin master. Sostituisci 'origine' con il tuo nome remoto
  3. Chiederà le credenziali. Scrivilo.

È tutto. Ho risolto il problema


0

oltre ad aggiungere le voci di configurazione ssh sopra

se windows

Set-Service ssh-agent -StartupType Automatic 

in PowerShell ora il codice vs non dovrebbe richiedere ...


0

per Windows 10 premi il tasto Windows digita cred e dovresti vedere "Credential Manager" nel Pannello di controllo fai clic per aprire e quindi rimuovi le relative credenziali memorizzate nella cache quindi riprova, ti chiederà l'ID utente password chiave nella password corretta e sarai bravo .

Mi è successo quando ho cambiato la password di rete


0

È possibile fare riferimento a questo collegamento per impostare una credenziale Git

Puoi eseguire il seguente comando per salvare le tue credenziali git. Non è necessario inserire nome utente e password a ogni comando git eseguito. (È per Windows )

git config --global credential.helper wincred

Per Mac / Linux fare clic su questo collegamento per Come salvare le credenziali Git

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.