Visual Studio Code总是要求Git凭据

我开始使用Visual Studio代码,我试图将我的测试项目保存到GitHub,但Visual Studio代码总是要求我的GitHub凭据。

我已经在我的电脑上安装了GitHub桌面Git。我已经跑了:

 git config --global credential.helper wincred

但是Visual Studio Code仍然在要求凭证。

我该如何解决这个问题?

下面是我位于用户配置文件文件夹中的.gitconfig文件:

    [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

下面是弹出窗口要求凭据:

Enter image description here

我在弹出窗口中输入了我的GitHub凭证,但仍然在Visual Studio Code中的Git输出窗口中得到这个错误:

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

使用SSH代替HTTP或HTTPS。

您需要在本地机器上设置SSH密钥,将它们上传到Git服务器,并将URL格式http://替换为git://,您将不再需要使用密码。

如果你不能使用ssh添加到你的配置:

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

文档是在这里


在GitHub中使用SSH密钥


简单地按照这些步骤,你将设置你的SSH密钥在任何时间:

  • 生成新的SSH密钥(如果您已经有密钥,则跳过此步骤) ssh-keygen -t rsa -C "your@email" < / p >

  • 一旦你在home/.ssh目录(或Windows下的Users/<your user>.ssh)中设置了密钥,打开它并复制内容


如何向GitHub帐户添加SSH密钥?

你都准备好了:-)

为什么Visual Studio Code需要密码?因为Visual Studio Code运行自动获取功能,而Git服务器没有任何信息来授权您的身份。它发生在:

  • 你的Git存储库有一个https远程URL。是的!这种遥控器每次都会问你。这里没有例外!(您可以使用下面的解决方案临时缓存授权,但不建议这样做。)
  • 你的Git存储库有ssh远程URL, 你没有复制你的ssh公钥到Git服务器上。使用ssh-keygen生成密钥并将其复制到Git服务器。完成了!这个解决方案还可以帮助您再也不用在终端上重新输入密码。关于答案,请参阅@Fnatical 在这里的一个很好的指令。

这个答案后面更新的部分对你一点帮助都没有。(这实际上会让你的工作流程停滞不前。)它只是停止在Visual Studio Code中发生的事情,并将这些发生的事情移动到终端。

如果这个糟糕的答案影响了你很长很长一段时间,我很抱歉。


原来的答案(不好)

我在Visual Studio代码文档上找到了解决方案:

提示:你应该设置一个凭据助手以避免被问到 每次VS Code与你的Git遥控器对话时,你都需要获取凭据。如果你 不要这样做,你可能想要考虑在…

. quot

因此,打开凭据帮助程序,以便Git将密码保存在内存中一段时间。默认情况下,Git会缓存密码15分钟。

在Terminal中输入如下内容:

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

输入如下命令修改默认密码缓存超时时间。

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

如果原来的答案不成立

我安装了Visual Studio Code和上面相同的配置,但正如@ddieppa所说,它也不适合我。所以我试图在用户设置中找到一个选项,我看到"git.autofetch"=真,现在设置为假!Visual Studio代码不再需要重复输入密码!

在菜单文件首选项用户设置: 类型:< / p >

将您的设置放在这个文件中以覆盖默认设置:

{
"git.autofetch": false
}

尝试安装"Git凭证管理器For Windows"(并遵循设置证书管理器的说明)。

在应用程序中使用Git(例如Visual Studio Code)时,它将"神奇的"打开Visual Studio团队服务凭证输入所需的对话框。

这篇文章:

你可以将GIT_SSH环境变量设置为腻子的plink.exe程序。

(然后使用pageant.exe程序作为身份验证代理。)

使用不带密码短语的SSH密钥。

也许这对一些人来说是显而易见的(对我来说不是)。如果你绝对需要密码,这也不能解决问题,但在我使用Mac的情况下,这是一个不错的妥协。

你应该能够像这样设置你的凭证:

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

你可以像这样获取远程URL:

git config --get remote.origin.url

在与这样的事情斗争了一段时间后,我想我想出了一个很好的解决方案,尤其是在GitHub和Bitbucket上有多个账户的时候。然而,对于Visual Studio Code,它最终从Git Bash终端启动,这样它从bash会话继承了环境变量,并且它知道要查看哪个ssh-agent。

我仍然很难找到一个地方来获取我需要的信息。另外,自2017年以来,ssh-agent只有在您尝试访问存储库时才会提示您输入密码短语。

我把我的发现放在在这里,如果有人感兴趣的话。

下面的步骤教你如何:

  1. 生成SSH密钥(不含密码短语**)
  2. 将第1步中生成的公钥添加到Git存储库中
  3. 确认以上步骤已成功完成
  4. 第一次提交(无需提供用户名/密码)

**如果您的工作特别敏感,生成没有密码短语的SSH密钥是不明智的。

操作系统 - Fedora 28 | 编辑器 - Visual Studio Code v1.23.0 | 存储库 - Git

生成SSH密钥:

  • ssh-keygen -t rsa -C "email@goeshere.com"
  • 输入要保存密钥的文件:按输入
  • 输入密码:按输入
  • 再次输入相同的密码:按输入

完成上述步骤后,您的公钥的位置将显示在终端窗口中。如果当前登录的用户是'bob',那么公钥的位置将是/home/bob/.ssh/id_rsa.pub

复制并导入公钥到GitHub:

  • < p > cat /home/bob/.ssh/id_rsa.pub

  • 将现在显示在终端窗口中的整个公钥复制到剪贴板

  • 进入https://github.com并登录

  • 单击屏幕右上角的用户图标,选择设置

  • < p >单击SSH和GPG密钥

  • < p >单击新的SSH密钥

  • 输入一个标题,将复制到剪贴板第一个项目符号中的公钥粘贴,然后单击添加SSH密钥

确认以上步骤:

  • < p > ssh -T git@github.com

  • < p > yes

  • < p > 这就跟你问声好!您已成功验证,但GitHub不提供shell访问。

第一次提交/推送无需输入用户名/密码:

  • < p > touch test.txt

  • < p > git add test.txt

  • git commit -打开编辑器,输入消息并保存文件。如果vi是你的编辑器,文件打开后按,输入一条消息,按Esc,然后输入:x保存更改。

  • < p > git push

您可能遇到的唯一问题是当您尝试SSH到GitHub时。这个链接将提供一些帮助-

寻找快乐!

我所要做的就是运行这个命令:

git config --global credential.helper wincred

然后我被提示输入两次密码。

下一次它成功了,没有提示我输入密码。

这对我来说很管用:

  1. 设置证书帮助存储:

    git config --global credential.helper store

  2. 然后验证你是否想:

    git config --global credential.helper store

使用引用自在这里Git Bash的简单示例(仅适用于当前存储库,对所有存储库使用--global):

git config credential.helper store
git push http://example.com/repo.git


Username: < type your username >
Password: < type your password >


[several days later]


git push http://example.com/repo.git


[your credentials are used automatically]

它也适用于Visual Studio Code。

一个更详细的例子和高级用法是在这里

注意:用户名和密码不加密,以纯文本格式存储,所以只能在您的个人计算机上使用。

对于我来说,我已经用SSH密钥设置了远程存储库,但是Git无法找到它们,因为HOMEDRIVE环境变量由于公司的域策略被自动设置为网络共享。在启动code .之前更改shell中的环境变量会导致Visual Studio Code继承正确的环境变量,并且在Git输出窗口中不再出现连接错误voilà。

现在我只需要弄清楚如何覆盖域策略,因此HOMEDRIVE总是指向我的本地c:\users\marvhen目录,这是.ssh目录的默认位置。

我设法通过执行以下步骤来阻止这种情况。

  1. 卸载GitHub桌面(我不确定这是必要的)
  2. 卸载证书管理器: cd "C:\Program Files\Git\mingw64\libexec\git-core"git-credential-manager.exe uninstall
  3. 重置凭证帮助器以使用wincred: git config --global credential.helper wincred
  4. 使用Visual Studio Code 一些更改和重新输入凭证。

注意:我使用个人访问令牌作为密码。

我用简单的方法解决了一个类似的问题:

  1. 进入CMD或终端
  2. git pull origin master类型。用你的远程名称替换'origin'
  3. 它会要求提供证书。类型。

这是所有。我理解了这个问题。

请按照以下步骤进行处理。

卸载Visual Studio Code和Git软件,然后重新安装。将Git存储库克隆URL从SSH更改为HTTPS。

Windows 10:进入控制面板证书管理器Windows凭据→单击Git链接,→编辑→更新新密码。这应该有用。

除了添加上面的SSH配置项之外

如果窗户

Set-Service ssh-agent -StartupType Automatic

PowerShell。

现在Visual Studio代码应该不会提示…

我在Visual Studio Code中遇到了类似的问题。

我通过将远程URL更改为https(在文件. /配置中)来解决这个问题:

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

还有:

git config --global credential.helper wincred

我又拉了一次,弹出了Windows凭据,问题解决了。

一般来说,您可以使用内置的凭据存储设施:

git config --global credential.helper store

或者,如果你在Windows上,你可以使用他们的证书系统:

git config --global credential.helper wincred

或者,如果你在macOS上,你可以使用他们的凭据系统:

git config --global credential.helper osxkeychain

第一种解决方案在大多数情况下是最优的。

Windows 10:

  • 窗户键。
  • 输入信誉,你会看到"凭据管理器"在控制面板
  • 单击此处打开并删除相关的缓存凭据。然后再试一次。它将询问用户ID和密码。输入正确的密码就可以了。

当我修改我的网络密码时,就发生了这种情况。

我通常运行这个简单的命令来将Git远程URL从HTTPS更改为SSH:

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

Git自动认证。从v1.45 发布说明:

GitHub存储库的GitHub身份验证

VS Code现在具有针对GitHub的自动GitHub身份验证 存储库。你现在可以克隆,拉,推和从公共和 私有存储库,无需配置任何凭据管理器 您的系统。甚至在集成终端中调用的Git命令 示例git推送,现在自动验证您的 GitHub帐户。< / p >

可以禁用GitHub鉴权 git.githubAuthentication设置。您也可以禁用终端 与git.terminalAuthentication的身份验证集成 设置。< / p >

你可以参考这个链接来设置Git凭据

您可以运行以下命令来保存Git凭据。你不需要每次运行Git命令时都输入用户名和密码(适用于窗户):

git config --global credential.helper wincred

对于Mac / Linux,请参见Git Credential Manager for Mac and Linux了解如何保存Git凭据。

下面是我在电脑上解决这个问题的方法:

  1. 打开Visual Studio代码

  2. 进入菜单文件首选项设置

  3. 在User页签下,展开扩展并选择Git

    Enter image description here

  4. 找到右边窗格中的Autofetch并取消选中它

    Enter image description here

如果你是在Windows PC上,那么安装Git for Windows。就是这样!

Ubuntu用户只需在Visual Studio Code终端输入以下命令:

git config --global credential.helper store

现在,输入一次你的用户名和密码,之后它就不会再问你了。

注意:

  1. 用户名和密码不是明文加密存储的,请谨慎使用。

  2. 但是,如果你的密码包含一些特殊字符,如@,#,&, *等,那么这些字符将被加密。

此外,你可以找到你的'。Git-credentials文件在家里。它是隐藏的,所以一定要启用隐藏文件。

地点:~ / .git-credentials

相反的问题,但相关的:

在我的情况下,我努力与Visual Studio Code集成终端不忘记输入的密码,即使缓存助手超时已经过期。

不过,外部终端会话工作正常。

我发现在Visual Studio Code中有一个选项,它允许你在实际的Git插件上设置一个可选的缓存,这并不允许预期的行为发生。

Visual Studio Code preferences UI

一旦检查,我的密码在缓存超时时就被忘记了,所以我可以毫不费力地从个人账户跳到工作账户:)

Linux和Visual Studio Code 1.58.2。

我在Visual Studio Code和Ubuntu 20.04 (Focal Fossa)上运行这个:

它自动解决了定期询问凭证的问题:

git config --global credential.helper store

打开Visual Studio Code的用户必须与执行Git命令的用户相同。然后在终端中执行如下命令。

git config --global credential.helper store
git pull

在下一个操作push或pull中,您将不会看到它请求Git凭据。

(这个答案不是特定于GitHub,而是我使用BitBucket,但它也可以在GitHub中工作,因为概念是相同的)

就我而言,我使用的是Bitbucket应用程序密码,它总是要求我进行身份验证。

停止自动读取并不能解决问题,因为我一天要拉和推好几次,每次输入应用程序密码都很糟糕。

此外,我需要将应用程序密码存储在不安全的地方,这也是我不想使用以明文存储密码的credential.helper store,而是使用加密的credential.helper wincred的原因。

当对话框提示我使用浏览器而不是应用程序密码时,我要求使用浏览器登录,这是可行的,原因超出了我的理解。现在它不再要求凭据了(我不得不暂时改变我的默认浏览器,因为我工作时使用的bitbucket帐户不在我的默认浏览器中,对话框尝试使用默认浏览器进行身份验证)。

这对我有用。你只需要输入一次PAT。 Git配置——全局凭据。辅助wincred < / p >