Código do Visual Studio sempre solicitando credenciais git

218

Comecei a usar o Visual Studio Code e estava tentando salvar meu projeto de teste no GitHub , mas o Visual Studio Code sempre solicita minhas credenciais do GitHub .

Eu instalei no meu PC o GitHub Desktop e também o Git , já executei:

 git config --global credential.helper wincred

mas ainda assim o Visual Studio Code está solicitando as credenciais.

Qualquer ajuda?

aqui está o meu arquivo .gitconfig, localizado na pasta de perfil do usuário:

    [filter "lfs"]
    clean = git-lfs clean %f
    smudge = git-lfs smudge %f
    required = true
[user]
    name = ddieppa
[user]
    email = [email protected]
[credential]
    helper = wincred

Aqui estão as janelas pop-up solicitando as credenciais:

insira a descrição da imagem aqui

Entro minhas credenciais do GitHub no pop-up, mas ainda recebo esse erro na janela de saída do Git no Visual Studio Code :

remote: Anonymous access to ddieppa/LineOfBizApp.git denied.
fatal: Authentication failed for 'https://github.com/ddieppa/LineOfBizApp.git/'
ddieppa
fonte
qual URL do GItHub você está usando? um HTTP ou GIT (SSH)? Se você estiver usando o URL HTTP, inclua o usuário e a senha no URL. É melhor usar o GIT URL e adicionar sua chave SSH pública na lista de chaves SSH do usuário
yorammi
@yorammi Eu sou novo trabalhando com git, então instalei o Github Desktop e o Git e tentei salvar meu projeto usando o Visual Studio Code, para não saber o que estou passando. Como eu sei disso?
ddieppa
O @ddieppa GitHub Desktop tem uma maneira de trabalhar com autenticação de dois fatores com uma conexão https. No entanto, isso quebra outras ferramentas. Como a resposta disse, agora você precisa alterar o URL de origem de https para ssh.
Lex Li

Respostas:

157

Última atualização: 05 de março de 2019

Após 98 votos, acho que preciso dar uma resposta verdadeira com a explicação.

Por que o código VS solicita uma senha? Como o VSCode executa o recurso de busca automática, enquanto o servidor git não possui nenhuma informação para autorizar sua identidade. Isso acontece quando:

  • Seu repositório git tem httpsum URL remoto. Sim! Esse tipo de controle remoto sempre perguntará a você o tempo todo. Sem exceções aqui! (Você pode fazer um truque temporário para armazenar em cache a autorização como a solução abaixo, mas isso não é recomendado.)
  • Seu repositório git tem sslum URL remoto, MAS você não copiou sua chave pública ssh no servidor git. Use ssh-keygenpara gerar sua chave e copiá-la para o servidor git. Feito! Essa solução também ajuda você a nunca redigitar a senha no terminal novamente. Veja uma boa instrução por @Fnatical aqui para a resposta.

A parte atualizada no final desta resposta realmente não ajuda em nada. (Na verdade, você fica estagnado em seu fluxo de trabalho.) Ele apenas interrompe as coisas que acontecem no VSCode e move essas ocorrências para o terminal.

Desculpe se esta resposta ruim o afetou por muito, muito tempo.

-

a resposta original (ruim)

Encontrei a solução no documento VSCode :

Dica: você deve configurar um auxiliar de credencial para evitar que as credenciais sejam solicitadas toda vez que o VS Code conversar com os controles remotos do Git. Se você não fizer isso, considere Desativar a busca automática no menu ... para reduzir o número de avisos recebidos.

Portanto, ative o auxiliar de credenciais para que o Git salve sua senha na memória por algum tempo. Por padrão, o Git armazenará sua senha em cache por 15 minutos.

No Terminal, digite o seguinte:

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

Para alterar o tempo limite padrão do cache de senha, digite o seguinte:

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

UPDATE (Se a resposta original não funcionar)

Instalei o VS Code e a mesma configuração acima, mas como o @ddieppa disse, não funcionou para mim também. Então, tentei encontrar uma opção na configuração do usuário e vi "git.autofetch" = true, agora defina como false! O código VS não é mais necessário para inserir a senha repetidamente novamente!

No menu, clique em Arquivo / Preferências / Configuração do usuário e digite:

Coloque suas configurações neste arquivo para substituir as configurações padrão

{
  "git.autofetch": false
}
Davuz
fonte
2
Eu tentei isso, mas não funcionou para mim, eu mesmo usar este: $ git configuração --global credential.helper wincred
ddieppa
Embora a solução de busca automática pare o problema de pop-up constante, ela ainda exige a inserção de credenciais a cada push e pull. Se estiver usando um PC com http / s, a solução do gerenciador de credenciais abaixo funciona muito bem.
Ruttopia
3
as coisas não devem aparecer se você não iniciou a ação, especialmente as que solicitam credenciais - como você sabe que isso é seguro e não uma paródia?
Anthony Johnston
7
Tenha cuidado com essa configuração, por favor! Não serve para ajudá-lo a se lembrar das suas credenciais. Trata-se de ajudá-lo automaticamente a buscar o git. Consulte atlassian.com/git/tutorials/syncing#git-fetch para obter mais detalhes sobre isso. Tanto quanto armazenar suas credenciais está em causa, use o comando git config --global credential.helper cache. Dê uma olhada em git-scm.com/book/gr/v2/Git-Tools-Credential-Storage para obter mais detalhes.
Grato
7
Sugerir que você desative a busca automática é bom como uma opção "deixe-me em paz". Mas é semelhante a dizer "Se o seu software não funcionar, pare de usá-lo". É importante que as pessoas percebam a diferença. Sugiro que a parte "UPDATE" desta resposta diga "SE NÃO FUNCIONAR" e explique que você pode parar de incomodá-lo sem realmente resolver o problema. A parte da resposta acima UPDATE é realmente correto (pelo menos, seguindo o link documentação trabalhou para mim)
Don
66

Você deve poder definir suas credenciais assim:

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

Você pode obter o URL remoto assim:

git config --get remote.origin.url

yohosuff
fonte
5
Se eu tiver o @ na minha senha, qual será o URL?
Suvonkar 8/17
Esta é realmente uma boa maneira. Porém, uma pergunta: onde essas credenciais são salvas no sistema de arquivos local?
Teoman shipahi
1
No arquivo .git \ config.
precisa saber é
Observe também que <PASSWORD> é opcional, se você não deseja salvar sua senha no disco local e continuar solicitando isso.
Ben Barreth 08/03/19
Você também pode provisionar um token de acesso pessoal a ser usado para sua senha, dessa forma não estará expondo a senha da sua conta real presumivelmente armazenada em texto sem formatação. Além disso, você pode remover facilmente a provisão, se desejar ou se achar que seu sistema está perdido ou comprometido.
CTS_AE
55

Isso tem funcionado para mim:
1. Defina o credencial para armazenar
$ git config --global credential.helper store
2. em seguida, verifique se você deseja:
$ git config --global credential.helper store

Exemplo simples ao usar o git bash citado aqui (funciona apenas para repo atual, use --globalpara todos os repos)

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

[vários dias depois]
$ git push http://example.com/repo.git
[suas credenciais são usadas automaticamente]

Também funcionará para o VS Code.

Exemplo mais detalhado e uso avançado aqui .

Nota: Nome de usuário e senhas não são criptografados e armazenados em formato de texto sem formatação, portanto, use-os apenas no seu computador pessoal.

Vaibhav Vishal
fonte
2
Não faço ideia por que esse cache simplesmente não iria funcionar para mim no ubuntu 18.04 e no código vs. storefez isso.
D. Dan
1
muito não seguro. use o cache. Se o seu computador "pessoal" for cortada, suas credenciais git pode ser hackeado também ..
Hypersoft Sistemas de
1
cache salva credencial na memória, não é uma solução a longo prazo. Você não precisará digitar o nome de usuário e a senha toda vez, mas ainda assim precisará inseri-la com bastante frequência.
Vaibhav Vishal
1
Eu gosto desta resposta da melhor maneira. Não quero que seja solicitado o nome de usuário / senha toda vez que forçar o código para a origem (ou seja, GitLab) usando o VS Code
Sean McCarthy
Eu ainda argumento que esse método não é seguro. os creds são armazenados no arquivo `~ / .git-credentials`, que pode ser abusado quando o sistema é comprometido. Melhor mudar httpspara sshe use as teclas de SSH como uma alternativa.
Mohith7548 17/03
21

As etapas a seguir mostram como:

  1. Gere chaves SSH (sem senha **)
  2. Adicione a chave pública gerada na etapa 1 ao seu repositório Git
  3. Confirme se as etapas acima foram concluídas com sucesso
  4. Faça seu primeiro commit (sem precisar fornecer um nome de usuário / senha)

** Gerar chaves SSH sem uma senha é imprudente se seu trabalho for particularmente sensível.

OS - Fedora 28 | Editor - Código VS v1.23.0 | Repositório - Git

Gere chaves SSH:

  • ssh-keygen -t rsa -C "[email protected]"
  • Digite o arquivo no qual salvar a chave : Pressione Enter
  • Digite a senha : pressione Enter
  • Digite a mesma senha novamente : Pressione Enter

Depois de concluir as etapas acima, o local da sua chave pública é mostrado na janela do terminal. Se o usuário atualmente conectado for 'bob', o local da sua chave pública seria /home/bob/.ssh/id_rsa.pub

Copie e importe a chave pública para o GitHub:

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

  • Copie toda a chave pública que agora é exibida na janela do seu terminal para a área de transferência

  • Acesse https://github.com e faça login
  • Clique no ícone do usuário no canto superior direito da tela e selecione Configurações
  • Clique nas chaves SSH e GPG
  • Clique em Nova chave SSH
  • Digite um título, cole a chave pública copiada para a área de transferência no primeiro marcador e clique em Adicionar chave SSH

Confirme as etapas acima:

  • ssh -T [email protected]

  • yes

  • Oi ! Você se autenticou com sucesso, mas o GitHub não fornece acesso ao shell.

Primeiro confirme / envie sem precisar digitar um nome de usuário / senha: -touch test.txt

  • git add test.txt

  • git commit- abre o editor, insira uma mensagem e salve o arquivo. Se o vi for seu editor, pressione iquando o arquivo abrir, digite uma mensagem, pressione esc e, em seguida, digite :xpara salvar as alterações.

  • git push

O único soluço que você pode encontrar é quando tenta fazer o SSH no GitHub. Este link fornecerá assistência -

Caçada feliz!

Fnatical
fonte
20

Tente instalar o " Git Credential Manager para Windows " (e siga as instruções para configurar o gerenciador de credenciais ).

Quando necessário em um aplicativo usando Git (por exemplo, código VS), ele " magicamente " abre a caixa de diálogo necessária para a entrada de credencial do Visual Studio Team Services.

Cachorro vermelho
fonte
3
Eu gostaria que houvesse um "Git Credential Manager para Linux" também. Oh, espere, eu ssh-agentjá estou correndo . Mas o VS Code parece ignorar isso no Linux.
wigy 13/07/2016
esta é a solução mais simples para mim. e funciona muito bem! obrigado por apontar isso
dapidmini
20

Tudo o que eu precisava fazer era executar este comando:

git config --global credential.helper wincred

Em seguida, fui solicitada a senha duas vezes.

Da próxima vez, funcionou sem solicitar a senha.

Vamos para
fonte
2
Obrigado! Problema resolvido, e este também !
Jeffrey Roosendaal
4
No Ubuntu, use em storevez de wincred.
Cees Timmerman
1
Isso funcionou para mim! Você também pode fazer, por exemplo git config --global credential.helper 'cache --timeout==1209600', durar 2 semanas, em vez dos 15 minutos padrão. Fonte: help.github.com/en/github/using-git/…
Andrew
1
^ Para obter mais informações, consulte aqui: git-scm.com/docs/gitcredentials git-scm.com/docs/git-credential-cache git-scm.com/docs/git-credential-store store o armazenará permanentemente no diretório disco. Além disso, meu comentário anterior tem um erro: não use ==, use =. Tarde demais para editar.
Andrew
18

Use ssh em vez de http / https.

Você precisará definir chaves ssh na sua máquina local, enviá-las para o servidor git e substituir o formulário de URL http://para, git://e você não precisará mais usar senhas.

Se você não pode usar o ssh, adicione isso à sua configuração:

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

documentos estão aqui .


Usando a chave ssh no github


Simplesmente siga estas etapas e você configurará sua chave ssh rapidamente:

  • Gere uma nova chave ssh (ou pule esta etapa se você já tiver uma chave)
    ssh-keygen -t rsa -C "your@email"

  • Depois de definir sua chave no home/.sshdiretório (ou Users/<your user>.sshno Windows), abra-a e copie o conteúdo


Como adicionar a tecla sh à conta do github?

  • Entre na conta do github
  • Clique no fazendeiro no canto superior direito (Configurações)
    liquidação de contas do github
  • Clique no SSH keys
    seção chave ssh
  • Clique no Add ssh key
    Adicionar chave ssh
  • Cole sua chave e salve

E você está pronto para ir :-)

CodeWizard
fonte
4
Você também deve deixar claro qual é a causa raiz. No meu caso, desde que habilitei a autenticação de dois fatores, o SSH é a única maneira de conectar-se aos repositórios. Qualquer conexão https levará a esse prompt.
Lex Li
@codeWizard Não me lembro exatamente o que aconteceu, mas o VS Code estava funcionando bem. Quero dizer, conectar-se ao repositório do GitHub sem nenhuma configuração extra. Acho que talvez o problema tenha sido a instalação do Git após o Github Desktop. Isso seria possível?
ddieppa
O VC pode armazenar suas credenciais internamente e depois de reinstalar / atualizar o git, a configuração pode ter sido alterada. Eu não sou um usuário de VC sou um cara UNIX, então não posso testá-lo na minha máquina.
CodeWizard
3
@codeWizard Código VS é open source e multi-plataforma, você pode executá-lo no Windows, MacOS ou Linux :), trabalhando na variante ssh e veja o que eu recebo
ddieppa
1
O link para a documentação está quebrado.
Vishal
13

Em geral, você pode usar os recursos internos de armazenamento de credenciais:

git config --global credential.helper store

Ou, se você estiver no Windows, poderá usar o sistema de credenciais deles:

git config --global credential.helper wincred

Ou, se você estiver no MacOS, poderá usar o sistema de credenciais deles:

git config --global credential.helper osxkeychain

A primeira solução é ideal na maioria das situações.

Adam Erickson
fonte
6

Autenticação Git automática . Das notas da versão v1.45 :

Autenticação GitHub para repositórios GitHub

O VS Code agora tem autenticação automática do GitHub nos repositórios do GitHub. Agora você pode clonar, puxar, enviar e receber repositórios públicos e privados sem configurar nenhum gerenciador de credenciais em seu sistema. Até os comandos Git chamados no Terminal Integrado, por exemplo, git push, agora são autenticados automaticamente na sua conta GitHub.

Você pode desativar a autenticação do GitHub com a git.githubAuthenticationconfiguração Você também pode desativar a integração de autenticação terminal com a git.terminalAuthentication configuração.

Marca
fonte
Ótimo! Desativar essas duas configurações no Linux (Ubuntu 18.04 + KDE Plasma) corrige o manuseio de credenciais. Esses dois ativados foram substituídos askpass = /usr/bin/ksshaskpassno meu .gitconfige, como resultado, eu recebia o nome de usuário e a senha sempre solicitados. Isso provavelmente será mais votado como a versão 1.45 em mais máquinas.
Andrei Sinitson
4

Para o Windows 10: acesse o painel de controle / Gerenciador de credenciais / Credencial do Windows -> clique no link git, -> editar -> atualize para a nova senha. Isso deve funcionar

Meera
fonte
2

Use uma chave SSH sem uma senha.

Talvez isso seja óbvio para alguns (não era para mim). Também não resolve o problema se você precisar absolutamente de uma senha, mas esse foi um compromisso decente na minha situação no Mac.

adampfoster
fonte
2

Depois de brigar com algo assim por um tempo, acho que encontrei uma boa solução, especialmente ao ter várias contas no GitHub e no BitBucket. No entanto, para o VSCode, ele acabou sendo iniciado a partir de um terminal Git Bash, de modo que herdou as variáveis ​​de ambiente da sessão bash e soube qual agente ssh olhar.

Percebo que este é um post antigo, mas ainda lutei muito para encontrar um lugar para obter as informações necessárias. Além disso, desde 2017, o ssh-agent pode solicitar uma senha apenas quando você tenta acessar um repo.

Coloquei minhas descobertas aqui se alguém estiver interessado:

ScubaManDan
fonte
1

Após esse artigo :

Você pode apenas configurar o GIT_SSH env. var. para o programa plink.exe do Putty. (Em seguida, use o pageant.exe como um agente de autenticação)

Paul Paku
fonte
1

Resolva o problema seguindo as etapas.

Os softwares desinstalados Vscode e git e reinstalaram o mesmo. O URL do clone do repositório git foi alterado de ssh para https.

Sundar
fonte
1

Eu tive um problema semelhante no Visual Studio Code.

Resolvi alterando o URL remoto para https . (no arquivo .git / config)

[remote "origin"]
    url = https://[email protected]/plesk-git/project.git

e também

git config --global credential.helper wincred

puxado novamente, o pop-up de credenciais do Windows saiu, os problemas resolvidos.

Vland
fonte
0

Para mim, configurei meu repositório remoto com uma chave SSH, mas o git não pôde encontrá-los porque a variável de ambiente HOMEDRIVE estava sendo automaticamente definida como um compartilhamento de rede devido à política de domínio da minha empresa. Alterar essa variável de ambiente no meu shell antes do lançamento code .fez com que o VSCode herdasse a variável de ambiente correta e viola, sem mais erros de conexão na janela de saída do git.

Agora só preciso descobrir como substituir a política de domínio, para que o HOMEDRIVE esteja sempre apontando para o meu c:\users\marvhendiretório local , que é o local padrão para o .sshdiretório.

marvhen
fonte
0

Consegui parar isso executando as seguintes etapas.

  1. Desinstalar o Git Desktop (Não tenho certeza se isso é necessário)
  2. Desinstale o Credentials Manager cd "C:\Program Files\Git\mingw64\libexec\git-core"seguido porgit-credential-manager.exe uninstall
  3. Redefinir o assistente de credenciais para usar o wincred git config --global credential.helper wincred
  4. Código do usuário VS para enviar por push algumas alterações e reinserir credenciais.

NOTA: Eu estava usando um token de acesso pessoal como minha senha.

Mick
fonte
0

Resolvi um problema semelhante de uma maneira simples:

  1. Ir para o CMD ou terminal
  2. Digite git pull origin master. Substitua 'origem' pelo seu nome Remoto
  3. Ele solicitará as credenciais. Digite.

Isso é tudo. Eu resolvi o problema

Avinash
fonte
0

além de adicionar as entradas de configuração ssh acima

se janelas

Set-Service ssh-agent -StartupType Automatic 

no PowerShell agora o código vs não deve solicitar ...

ubreddy
fonte
0

para o windows 10, pressione a tecla windows do tipo cred e você deverá ver "Credential Manager" no painel de controle, clique para abrir e remova as credenciais em cache relacionadas e tente novamente. Ele solicitará a senha de identificação de usuário e a senha correta. .

Aconteceu comigo quando mudei minha senha de rede

Rohit Paliwal
fonte
0

Eu costumo executar este comando simples para alterar o URL remoto do git de https para ssh

git remote set-url origin [email protected]:username/repo-name-here.git
Ahmad
fonte