Visual Studio Code siempre solicita credenciales de git


218

Comencé a usar Visual Studio Code e intentaba guardar mi proyecto de prueba en GitHub , pero Visual Studio Code siempre me pide mis credenciales de GitHub .

He instalado en mi PC GitHub Desktop y también Git , ya ejecuté:

 git config --global credential.helper wincred

pero aún así Visual Studio Code está pidiendo las credenciales.

¿Alguna ayuda?

aquí está mi archivo .gitconfig ubicado en el perfil del usuario:

    [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

Aquí están las ventanas emergentes que solicitan las credenciales:

ingrese la descripción de la imagen aquí

Ingreso mis credenciales de GitHub en la ventana emergente, pero sigo recibiendo este error en la ventana de salida de Git en Visual Studio Code :

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

¿Qué URL de GItHub estás usando? un HTTP o GIT (SSH)? Si está utilizando una URL HTTP, debe incluir el usuario y la contraseña en la URL. Es mejor que use la URL GIT y agregue su clave SSH pública en la lista de claves SSH del usuario
yorammi

@yorammi Soy nuevo trabajando con git, así que instalé Github Desktop y Git e intenté guardar mi proyecto usando Visual Studio Code, así que no sé qué estoy pasando. ¿Cómo sé eso?
ddieppa

@ddieppa GitHub Desktop tiene una forma de trabajar con autenticación de dos factores con una conexión https. Sin embargo, eso rompe otras herramientas. Como dice la respuesta, ahora debe cambiar la URL de origen de https a ssh.
Lex Li

Respuestas:


157

Última actualización: 05 de marzo de 2019

Después de 98 votos a favor, creo que necesito dar una respuesta verdadera con la explicación.

¿Por qué el código VS pide una contraseña? Porque VSCode ejecuta la función de recuperación automática, mientras que el servidor git no tiene ninguna información para autorizar su identidad. Sucede cuando:

  • Su repositorio de git tiene httpsuna URL remota. ¡Si! Este tipo de control remoto le preguntará absolutamente todo el tiempo. No hay excepciones aquí! (Puede hacer un truco temporal para almacenar en caché la autorización como la solución a continuación, pero esto no se recomienda).
  • Su repositorio de git tiene ssluna URL remota, PERO no ha copiado su clave pública ssh en el servidor git. Use ssh-keygenpara generar su clave y copiarla al servidor git. ¡Hecho! Esta solución también le ayuda a nunca volver a escribir la contraseña en el terminal. Vea una buena instrucción de @Fnatical aquí para la respuesta.

La parte actualizada al final de esta respuesta realmente no te ayuda en absoluto. (Realmente lo hace estancarse en su flujo de trabajo). Solo detiene las cosas que suceden en VSCode y mueve estos eventos al terminal.

Lo siento si esta mala respuesta te ha afectado por mucho, mucho tiempo.

-

la respuesta original (mala)

Encontré la solución en el documento VSCode :

Consejo: debe configurar un asistente de credenciales para evitar que se le pidan credenciales cada vez que VS Code hable con sus controles remotos Git. Si no hace esto, puede considerar deshabilitar la recuperación automática en el menú ... para reducir la cantidad de mensajes que recibe.

Por lo tanto, active el asistente de credenciales para que Git guarde su contraseña en la memoria durante algún tiempo. De forma predeterminada, Git almacenará en caché su contraseña durante 15 minutos.

En Terminal, ingrese lo siguiente:

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

Para cambiar el tiempo de espera predeterminado de la caché de contraseña, ingrese lo siguiente:

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

ACTUALIZACIÓN (si la respuesta original no funciona)

Instalé VS Code y configé lo mismo arriba, pero como dijo @ddieppa, tampoco funcionó para mí. Así que intenté encontrar una opción en Configuración de usuario, y vi "git.autofetch" = verdadero, ¡ahora configuro que es falso! ¡VS Code ya no es necesario para ingresar la contraseña repetidamente!

En el menú, haga clic en Archivo / Preferencias / Configuración de usuario y escriba esto:

Coloque su configuración en este archivo para sobrescribir la configuración predeterminada

{
  "git.autofetch": false
}

2
Lo intenté, pero no funcionó para mí, incluso utilicé este: $ git config --global credential.helper wincred
ddieppa

Si bien la solución de recuperación automática detiene el problema emergente constante, aún requiere ingresar credenciales en cada inserción y extracción. Si usa una PC con http / s, la siguiente solución de administrador de credenciales funciona muy bien.
ruttopia

3
las cosas no deberían aparecer si no ha iniciado la acción, especialmente las cosas que solicitan credenciales: ¿cómo sabe que esto es seguro y no una parodia?
Anthony Johnston

77
¡Tenga cuidado con esa configuración, por favor! No tiene la intención de ayudarte a recordar tus credenciales en absoluto. Se trata de ayudarte automáticamente a obtener git-fetch. Eche un vistazo a atlassian.com/git/tutorials/syncing#git-fetch para obtener más detalles al respecto. En lo que respecta al almacenamiento de sus credenciales, use el comando git config --global credential.helper cache. Eche un vistazo a git-scm.com/book/gr/v2/Git-Tools-Credential-Storage para obtener más detalles.
Agradecido el

77
Sugerir que desactive la recuperación automática está bien como una opción para "dejarme solo". Pero es similar a decir "Si su software no funciona, simplemente deje de usarlo". Es importante que las personas se den cuenta de la diferencia. Sugeriría que la parte "ACTUALIZAR" de esta respuesta diga "SI ESO NO FUNCIONA" y explique que puede hacer que deje de molestarlo sin solucionar el problema. La parte de la respuesta anterior ACTUALIZACIÓN es realmente correcta (al menos, siguiendo el enlace de documentación funcionó para mí)
Don

66

Debería poder establecer sus credenciales de esta manera:

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

Puede obtener la URL remota de esta manera:

git config --get remote.origin.url


55
Si tengo la @ en mi contraseña, ¿cuál será la URL?
Suvonkar

Esta es una muy buena manera. Una pregunta, sin embargo, ¿dónde se guardan esas credenciales en el sistema de archivos local?
Teoman shipahi el

1
En el archivo .git \ config.
yohosuff

también tenga en cuenta que <CONTRASEÑA> es opcional, si no desea guardar su contraseña en el disco local y desea que se le siga solicitando eso.
Ben Barreth

También puede proporcionar un token de acceso personal para usar como contraseña, de esta manera no está exponiendo la contraseña de su cuenta real presumiblemente almacenada en texto sin formato. También puede eliminar fácilmente la disposición si lo desea o si cree que su sistema está perdido o comprometido.
CTS_AE

55

Esto ha estado funcionando para mí:
1. Establezca hepler de credenciales para almacenar
$ git config --global credential.helper store
2. luego verifique si desea:
$ git config --global credential.helper store

Ejemplo simple cuando se usa git bash citado desde Aquí (funciona solo para el repositorio actual, se usa --globalpara todos los repositorios )

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

[varios días después]
$ git push http://example.com/repo.git
[sus credenciales se usan automáticamente]

También funcionará para VS Code.

Ejemplo más detallado y uso avanzado aquí .

Nota: El nombre de usuario y las contraseñas no están encriptados y almacenados en formato de texto sin formato, así que úselos solo en su computadora personal.


2
No tengo idea de por qué este caché simplemente no querría funcionar para mí en ubuntu 18.04 y vs código. storelo hizo.
D. Dan

1
Muy poco seguro. use el caché en su lugar. si su computadora "personal" es pirateada, sus credenciales de git también podrían ser pirateadas ...
Hypersoft Systems

1
caché guarda credenciales en la memoria, no es una solución a largo plazo. No tendrá que ingresar el nombre de usuario y la contraseña cada vez, pero aún así deberá ingresarlo con bastante frecuencia.
Vaibhav Vishal el

1
Me gusta esta respuesta la mejor. No quiero que se me solicite un nombre de usuario / contraseña cada vez que empuje mi código al origen (es decir, GitLab) usando VS Code
Sean McCarthy

Sigo argumentando que este método no es seguro. los créditos se almacenan en el archivo `~ / .git-credentials` que se puede abusar cuando el sistema se ve comprometido. Mejor el cambio httpsa sshy utilice las teclas de ssh como una alternativa.
Mohith7548

21

Los siguientes pasos lo guían a través de cómo:

  1. Generar claves SSH (sin frase de contraseña **)
  2. Agregue la clave pública generada en el paso 1 a su repositorio Git
  3. Confirme que los pasos anteriores se hayan completado con éxito
  4. Realice su primer compromiso (sin tener que proporcionar un nombre de usuario / contraseña)

** Generar claves SSH sin una frase de contraseña no es aconsejable si su trabajo es particularmente sensible.

SO - Fedora 28 | Editor - Código VS v1.23.0 | Repositorio - Git

Generar claves SSH:

  • ssh-keygen -t rsa -C "email@goeshere.com"
  • Ingrese el archivo para guardar la clave : presione Entrar
  • Ingrese la frase de contraseña : presione Entrar
  • Ingrese la misma frase de contraseña nuevamente : presione Entrar

Después de completar los pasos anteriores, la ubicación de su clave pública se muestra en la ventana del terminal. Si el usuario actualmente conectado es 'bob', la ubicación de su clave pública sería /home/bob/.ssh/id_rsa.pub

Copie e importe la clave pública a GitHub:

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

  • Copie toda la clave pública que ahora se muestra en la ventana de su terminal en el portapapeles

  • Vaya a https://github.com e inicie sesión
  • Haga clic en el icono del usuario en la esquina superior derecha de la pantalla y seleccione Configuración
  • Haga clic en las claves SSH y GPG
  • Haga clic en Nueva clave SSH
  • Ingrese un título, pegue la clave pública copiada en el portapapeles en el primer punto y haga clic en Agregar clave SSH

Confirme los pasos anteriores:

  • ssh -T git@github.com

  • yes

  • Hola ! Te has autenticado con éxito, pero GitHub no proporciona acceso de shell.

Primero confirme / presione sin tener que ingresar un nombre de usuario / contraseña: -touch test.txt

  • git add test.txt

  • git commit- Abre el editor, ingresa un mensaje y guarda el archivo. Si vi es su editor, presione iuna vez que se abra el archivo, ingrese un mensaje, presione esc y luego ingrese :xpara guardar los cambios.

  • git push

El único inconveniente que puede encontrar es cuando intenta SSH a GitHub. Este enlace proporcionará algo de ayuda:

¡Feliz cacería!


20

Intente instalar " Git Credential Manager para Windows " (y siga las instrucciones para configurar el administrador de credenciales ).

Cuando sea necesario dentro de una aplicación que use Git (por ejemplo, VS Code), se abrirá " mágicamente " el cuadro de diálogo requerido para la entrada de credenciales de Visual Studio Team Services.


3
Ojalá hubiera un "Git Credential Manager para Linux" también. Oh, espera, ya estoy corriendo ssh-agent. Pero VS Code parece ignorar eso en Linux.
wigy

Esta es la solución más simple para mí. y funciona muy bien! gracias por señalar esto
dapidmini 05 de

20

Todo lo que tenía que hacer era ejecutar este comando:

git config --global credential.helper wincred

Luego se me solicitó la contraseña dos veces.

La próxima vez funcionó sin pedirme una contraseña.


2
¡Gracias! Problema resuelto, ¡y este también !
Jeffrey Roosendaal

44
En Ubuntu, use en storelugar de wincred.
Cees Timmerman

1
¡Esto funcionó para mí! También puede hacerlo, por ejemplo, git config --global credential.helper 'cache --timeout==1209600'para que dure 2 semanas en lugar de los 15 minutos predeterminados. Fuente: help.github.com/en/github/using-git/…
Andrew

1
^ Para obtener más información sobre esto, consulte aquí: git-scm.com/docs/gitcredentials git-scm.com/docs/git-credential-cache git-scm.com/docs/git-credential-store store lo almacenará permanentemente en el disco. Además, mi comentario anterior tiene un error: no usar ==, usar =. Demasiado tarde para editar.
Andrew

18

Use ssh en lugar de http / https.

Será necesario que las claves ssh conjunto en el equipo local, cargarlos en el servidor de Git y reemplazar la forma url http://para git://y no tendrá que utilizan contraseñas más.

Si no puede usar ssh agregue esto a su configuración:

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

Los documentos están aquí .


Usando la tecla ssh en github


Simplemente siga esos pasos y configurará su clave ssh en muy poco tiempo:

  • Genere una nueva clave ssh (u omita este paso si ya tiene una clave)
    ssh-keygen -t rsa -C "your@email"

  • Una vez que tenga su clave configurada en el home/.sshdirectorio (o Users/<your user>.sshdebajo de Windows), ábrala y copie el contenido


¿Cómo agregar la tecla sh a la cuenta de github?

  • Inicie sesión en la cuenta de github
  • Haga clic en el ranchero en la esquina superior derecha (Configuración)
    configuración de cuentas github
  • Haga clic en el SSH keys
    sección de clave ssh
  • Haga clic en el Add ssh key
    Añadir clave ssh
  • Pega tu llave y guarda

Y todo listo para ir :-)


44
También debe dejar en claro cuál es la causa raíz. En mi caso, dado que he habilitado la autenticación de dos factores, entonces SSH es la única forma de conectarse a repositorios. Cualquier conexión https conducirá a tal aviso.
Lex Li

@codeWizard No recuerdo exactamente qué sucedió, pero VS Code funcionaba bien, me refiero a conectarme al repositorio de GitHub sin ninguna configuración adicional, creo que tal vez el problema fue que instalé Git después de Github Desktop, ¿podría ser posible?
ddieppa

VC podría almacenar sus credenciales internamente y una vez que haya reinstalado / actualizado git, la configuración podría haber cambiado. No soy un usuario de VC, soy un tipo de UNIX, así que no puedo probarlo en mi máquina.
CodeWizard

3
@codeWizard VS Code es de código abierto y multiplataforma, puede ejecutarlo en Windows, MacOS o Linux :), trabajando en la variante ssh y vea lo que obtengo
ddieppa

1
El enlace a la documentación está roto.
Vishal

14

En general, puede utilizar las instalaciones de almacenamiento de credenciales incorporadas:

git config --global credential.helper store

O, si está en Windows, puede usar su sistema de credenciales:

git config --global credential.helper wincred

O, si estás en MacOS, puedes usar su sistema de credenciales:

git config --global credential.helper osxkeychain

La primera solución es óptima en la mayoría de las situaciones.


6

Autenticación automática de Git . De las notas de la versión v1.45 :

Autenticación de GitHub para repositorios de GitHub

VS Code ahora tiene autenticación automática de GitHub contra repositorios de GitHub. Ahora puede clonar, extraer, empujar hacia y desde repositorios públicos y privados sin configurar ningún administrador de credenciales en su sistema. Incluso los comandos de Git invocados en el Terminal integrado, por ejemplo, git push, ahora se autentican automáticamente en su cuenta de GitHub.

Puede deshabilitar la autenticación de GitHub con la git.githubAuthenticationconfiguración. También puede deshabilitar la integración de autenticación de terminal con la git.terminalAuthentication configuración.


¡Excelente! Deshabilitar estas dos configuraciones en Linux (Ubuntu 18.04 + KDE Plasma) corrige el manejo de credenciales. Estos dos habilitados se anulaban askpass = /usr/bin/ksshaskpassen mi .gitconfigy, como resultado, recibía un nombre de usuario y una contraseña cada vez. Esto probablemente se votará más a medida que la versión 1.45 se desarrolle en más máquinas.
Andrei Sinitson

4

Para Windows 10: vaya al panel de control / Administrador de credenciales / Credencial de Windows -> haga clic en el enlace git, -> editar -> actualizar a nueva contraseña. Eso debería funcionar


2

Use una clave SSH sin una frase de contraseña.

Tal vez esto sea obvio para algunos (no lo fue para mí). Tampoco resuelve el problema si requiere absolutamente una frase de contraseña, pero este fue un compromiso decente en mi situación en Mac.


2

Después de luchar con algo como esto por un tiempo, creo que se me ocurrió una buena solución, especialmente cuando tengo varias cuentas en GitHub y BitBucket. Sin embargo, para VSCode, finalmente terminó como iniciarlo desde un terminal Git Bash para que heredara las variables de entorno de la sesión bash y supiera a qué agente ssh mirar.

Me doy cuenta de que esta es una publicación antigua, pero todavía me costó mucho encontrar un lugar para obtener la información que necesitaba. Además, desde 2017, ssh-agent tiene la capacidad de solicitar una frase de contraseña solo cuando intenta acceder a un repositorio.

Pongo mis conclusiones aquí si alguien está interesado:


1

Siguiendo ese artículo :

Puede configurar GIT_SSH env. var. al programa Putty's plink.exe. (Luego use pageant.exe como agente de autenticación)


1

Resuelva el problema siguiendo los pasos.

Software desinstalado Vscode y git y reinstalado el mismo. Cambió la URL del clon del repositorio git de ssh a https.


1

Tuve un problema similar en Visual Studio Code.

Lo resolví cambiando la url remota a https . (en el archivo .git / config)

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

y también

git config --global credential.helper wincred

tirado de nuevo, apareció una ventana emergente de credenciales de Windows, problemas resueltos.


0

Para mí, configuré mi repositorio remoto con una clave SSH pero git no pudo encontrarlos porque la variable de entorno HOMEDRIVE se configuraba automáticamente en un recurso compartido de red debido a la política de dominio de mi empresa. Cambiar esa variable de entorno en mi shell antes del inicio code .causó que VSCode heredara la variable de entorno correcta y no violara más errores de conexión en la ventana de salida de git.

Ahora solo tengo que descubrir cómo anular la política de dominio para que HOMEDRIVE siempre apunte a mi c:\users\marvhendirectorio local , que es la ubicación predeterminada para el .sshdirectorio.


0

Logré detener esto llevando a cabo los siguientes pasos.

  1. Desinstalar Git Desktop (no estoy seguro de que sea necesario)
  2. Desinstalar Credentials Manager cd "C:\Program Files\Git\mingw64\libexec\git-core"seguido degit-credential-manager.exe uninstall
  3. Restablecer el asistente de credenciales para usar wincred git config --global credential.helper wincred
  4. Código VS del usuario para impulsar algunos cambios y volver a ingresar las credenciales.

NOTA: Estaba usando un token de acceso personal como mi contraseña.


0

Resolví un problema similar de una manera simple:

  1. Ir a CMD o Terminal
  2. Tipo git pull origin master. Reemplace 'origen' con su nombre remoto
  3. Le pedirá las credenciales. Escribelo.

Eso es todo. Resolví el problema


0

aparte de agregar las entradas de configuración ssh anteriores

si ventanas

Set-Service ssh-agent -StartupType Automatic 

en powershell ahora el código vs no debería solicitar ...


0

para Windows 10 presione la tecla de Windows escriba cred y debería ver "Credential Manager" en el Panel de control, haga clic para abrir y luego elimine las credenciales en caché relacionadas, luego intente nuevamente, le pedirá la clave de contraseña de identificación de usuario en la contraseña correcta y estará bien .

Sucedió conmigo cuando cambié mi contraseña de red


0

Normalmente ejecuto este comando simple para cambiar la URL remota de git de https a ssh

git remote set-url origin git@github.com:username/repo-name-here.git
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.