【问题标题】:Visual Studio Code is always asking for Git credentialsVisual Studio Code 总是要求提供 Git 凭据
【发布时间】:2016-03-27 19:09:55
【问题描述】:

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

我已经在我的电脑上安装了GitHub DesktopGit。我已经跑了:

 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

这是要求提供凭据的弹出窗口:

我在弹出窗口中输入了我的 GitHub 凭据,但在 Visual Studio Code 的 Git 输出窗口中仍然出现此错误:

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

【问题讨论】:

  • 您使用的是哪个 GItHub URL? HTTP 或 GIT (SSH)?如果您使用的是 HTTP URL,则必须在 URL 中包含用户名和密码。您最好使用 GIT URL 并将您的公共 SSH 密钥添加到用户的 SSH 密钥列表中
  • @yorammi 我是 git 的新手,所以我安装了 Github Desktop 和 Git 并尝试使用 Visual Studio Code 保存我的项目,所以我不知道我在传递什么。我怎么知道?
  • @ddieppa GitHub Desktop 可以通过 https 连接进行两因素身份验证。但是,这会破坏其他工具。就像答案说的那样,您现在需要将源 URL 从 https 更改为 ssh。
  • 多次重启也可能有帮助。我重新启动计算机 2 次,然后 VS 没有再次要求凭据。
  • 为什么用 Visual Studio 标记它? Visual StudioVisual Studio Code 是两个不同的东西。

标签: git visual-studio github visual-studio-code


【解决方案1】:

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

  • 您的 Git 存储库有一个 https 远程 URL。是的!这种遥控器绝对每次都会问你。这里没有例外! (您可以按照下面的解决方案做一个临时技巧来缓存授权,但不建议这样做。)
  • 您的 Git 存储库具有 ssl 远程 URL,您尚未将 ssh 公钥复制到 Git 服务器上。使用ssh-keygen 生成您的密钥并将其复制到 Git 服务器。完毕!此解决方案还可以帮助您不再在终端上重新输入密码。请参阅@Fnatical here 提供的良好说明以获得答案。

此答案末尾的更新部分对您根本没有帮助。 (实际上它会让你的工作流程停滞不前。)它只会阻止 Visual Studio Code 中发生的事情,并将这些事情转移到终端。

对不起,如果这个糟糕的答案影响了你很长很长时间。

--

原来的答案(不好)

我在Visual Studio Code document找到了解决方案:

提示:您应该set up a credential helper 以避免被问到 每次 VS Code 与您的 Git 远程通信时获取凭据。如果你 不要这样做,您可能需要考虑在 ... 菜单以减少您收到的提示数量。

所以,打开凭证助手,以便 Git 将您的密码保存在内存中一段时间​​。默认情况下,Git 会将您的密码缓存 15 分钟。

在终端中,输入以下内容:

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”=true,现在设置它为假! Visual Studio Code 不再需要重复输入密码!

在菜单文件首选项用户设置: 输入这些:

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

{
  "git.autofetch": false
}

【讨论】:

  • 我试过了,但对我没用,我什至用这个:$ git config --global credential.helper wincred
  • 虽然自动获取解决方案确实解决了不断弹出的问题,但它仍然需要在每次推拉时输入凭据。如果使用带有 http/s 的 PC,下面的凭据管理器解决方案效果很好。
  • 如果您没有启动操作,则不应弹出任何内容,尤其是要求凭据的内容 - 您怎么知道这是安全的而不是欺骗?
  • 请注意该设置!它根本不是为了帮助您记住您的凭据。它正在谈论自动帮助您获取 git-fetch。请查看atlassian.com/git/tutorials/syncing#git-fetch 了解更多详情。就存储凭据而言,请使用命令git config --global credential.helper cache。请查看git-scm.com/book/gr/v2/Git-Tools-Credential-Storage 了解更多详情。
  • 建议您关闭自动提取功能可以作为“别管我”的选项。但这类似于说“如果您的软件不起作用,请停止使用它”。人们认识到差异很重要。我建议这个答案的“更新”部分改为“如果那不起作用”,并解释说你可以让它停止打扰你而不实际解决问题。 UPDATE 上面的部分答案实际上是正确的(至少,按照对我有用的文档链接)
【解决方案2】:

这一直对我有用:

  1. 设置要存储的凭证助手:

    git config --global credential.helper store

  2. 然后验证是否需要:

    git config --global credential.helper store

使用引用自hereGit 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。

更详细的示例和高级用法是here

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

【讨论】:

  • 我不知道为什么这个缓存不想在 ubuntu 18.04 和 vs 代码上为我工作。 store 做到了。
  • 非常不安全。改用缓存。如果您的“个人”计算机被黑客入侵,您的 git 凭据也可能被黑客入侵..
  • 缓存将凭证保存在内存中,这不是一个长期的解决方案。您不必每次都输入用户名和密码,但仍然需要经常输入。
  • 我最喜欢这个答案。我不想每次使用 VS Code 将代码推送到源(即 GitLab)时都提示输入用户名/密码
  • 我仍然认为这种方法是不安全的。凭据存储在 ` ~/.git-credentials` 文件中,当系统受到威胁时可能会被滥用。最好将 https 更改为 ssh 并使用 ssh 密钥作为替代。
【解决方案3】:

您应该能够像这样设置您的凭据:

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

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

git config --get remote.origin.url

【讨论】:

  • 如果我的密码中有@,那么网址是什么?
  • 在 .git\config 文件中。
  • 还请注意, 是可选的,如果您不想将密码保存到本地磁盘并希望继续收到提示。
  • 您还可以提供个人访问令牌以用作您的密码,这样您就不会暴露您的真实帐户密码,可能以明文形式存储。如果您愿意,或者您认为您的系统丢失或受到损害,您也可以轻松删除该条款。
  • @Suvonkar,您可以在密码中使用 %40 而不是 @。
【解决方案4】:

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

git config --global credential.helper wincred

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

下次它在不提示我输入密码的情况下工作。

【讨论】:

【解决方案5】:

以下步骤将引导您了解如何:

  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"
  • 输入保存密钥的文件:按 Enter
  • 输入密码:按 Enter
  • 再次输入相同的密码:按 Enter

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

复制公钥并将其导入 GitHub:

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

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

  • 转到https://github.com 并登录

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

  • 单击SSH 和 GPG 密钥

  • 点击新建 SSH 密钥

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

确认以上步骤:

  • ssh -T git@github.com

  • yes

  • 嗨!您已成功通过身份验证,但 GitHub 不提供 shell 访问权限。

无需输入用户名/密码即可首次提交/推送:

  • touch test.txt

  • git add test.txt

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

  • git push

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

狩猎愉快!

【讨论】:

    【解决方案6】:

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

    git config --global credential.helper store

    或者,如果您使用的是 Windows,则可以使用他们的凭据系统:

    git config --global credential.helper wincred

    或者,如果您使用的是 macOS,则可以使用他们的凭证系统:

    git config --global credential.helper osxkeychain

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

    【讨论】:

      【解决方案7】:

      尝试安装“Git Credential Manager For Windows”(并按照说明设置credential manager)。

      在使用 Git 的应用程序(例如 Visual Studio Code)中需要时,它将“magically”打开Visual Studio Team Services 凭据输入所需的对话框。

      【讨论】:

      • 我也希望有一个“Linux 的 Git 凭证管理器”。哦,等等,我已经在运行ssh-agent。但是 VS Code 在 Linux 上似乎忽略了这一点。
      • 这对我来说是最简单的解决方案。效果很好!感谢您指出这一点
      • 感谢上帝的回答……唯一有效的方法。祝福你。
      【解决方案8】:

      使用 SSH 而不是 HTTP 或 HTTPS。

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

      如果您不能使用 ssh,请将其添加到您的配置中:

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

      文档是here


      在 GitHub 中使用 SSH 密钥


      只需按照以下步骤,您将立即设置您的 SSH 密钥:

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

      • home/.ssh 目录(或Windows 下的Users/&lt;your user&gt;.ssh)中设置密钥后,打开它并复制内容


      如何将 SSH 密钥添加到 GitHub 帐户?

      你们都准备好了:-)

      【讨论】:

      • 您还应该弄清楚根本原因是什么。就我而言,由于我启用了两因素身份验证,因此 SSH 是连接到 repos 的唯一方法。任何 https 连接都会导致这样的提示。
      • @codeWizard 我不记得究竟发生了什么,但 VS Code 工作正常,我的意思是无需任何额外配置即可连接到 GitHub 存储库,我想问题可能是我在 Github Desktop 之后安装了 Git ,这可能吗?
      • VC 可能会在内部存储其凭据,一旦您重新安装/升级 git,配置可能已更改。我不是 VC 用户,我是 UNIX 人,所以我无法在我的机器上测试它。
      • @codeWizard VS Code 是开源和多平台的,您可以在 Windows、MacOS 或 Linux 上运行它:),使用 ssh 变体,看看我得到了什么
      • 文档链接已损坏。
      【解决方案9】:

      自动 Git 身份验证。从 v1.45 Release Notes:

      GitHub 存储库的 GitHub 身份验证

      VS Code 现在具有针对 GitHub 的自动 GitHub 身份验证 存储库。您现在可以克隆、拉取、推送到公共和 私有存储库,无需在其中配置任何凭据管理器 你的系统。甚至在集成终端中调用的 Git 命令,对于 例如 git push,现在自动根据您的身份进行身份验证 GitHub 帐户。

      您可以使用 git.githubAuthentication 设置。您也可以禁用终端 与git.terminalAuthentication 的身份验证集成 设置。

      【讨论】:

      • 太棒了!在 Linux(Ubuntu 18.04 + KDE Plasma)上禁用这两个设置可修复凭据处理。这两个启用在我的.gitconfig 中覆盖了askpass = /usr/bin/ksshaskpass,因此我每次都被询问用户名和密码。随着 1.45 版角色出现在更多机器上,这可能会得到更多支持。
      【解决方案10】:

      对于 Windows 10:转到 控制面板凭据管理器Windows 凭据 → 单击 Git 链接,→ 编辑 → 更新为新密码。应该可以的。

      【讨论】:

      • 啊哈!另一种情况是过期/重置密码导致神秘问题和用户浪费半天。谢谢!
      【解决方案11】:

      Ubuntu 用户只需在 Visual Studio Code 的终端中输入此命令:

      git config --global credential.helper store
      

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

      注意:

      1. 用户名和密码未加密并以纯文本格式存储,因此请谨慎使用。

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

      此外,您可以在家中找到您的“.git-credentials”文件。它是隐藏的,因此请确保启用隐藏文件。

      位置:~/.git-credentials

      【讨论】:

        【解决方案12】:

        使用不带密码的 SSH 密钥。

        也许这对某些人来说是显而易见的(对我来说不是)。如果您绝对需要密码,它也不能解决问题,但在我在 Mac 上的情况下,这是一个不错的折衷方案。

        【讨论】:

          【解决方案13】:

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

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

          git config --global credential.helper store
          

          【讨论】:

            【解决方案14】:

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

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

            如果有人感兴趣,我会将我的发现记录在here

            【讨论】:

              【解决方案15】:

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

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

              【讨论】:

                【解决方案16】:

                这就是我在计算机上解决问题的方法:

                1. 打开 Visual Studio 代码

                2. 转到菜单文件首选项设置

                3. 在用户选项卡下,展开 Extensions 并选择 Git

                4. 在右侧窗格中找到 Autofetch 并取消选中它

                【讨论】:

                • 这应该如何工作?什么是操作理论?为什么这会阻止 Git 请求凭据?
                【解决方案17】:

                关注this article

                您可以将 GIT_SSH 环境变量设置为 PuTTY 的 plink.exe 程序。

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

                【讨论】:

                  【解决方案18】:

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

                  1. 卸载GitHub Desktop(我不确定这是否必要)
                  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 推送一些更改并重新输入凭据。

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

                  【讨论】:

                  • 我的问题仅通过第 2 步解决。所有其他答案都不适用于我的情况。
                  • 大概是在 Windows 上?
                  【解决方案19】:

                  通过以下步骤解决问题。

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

                  【讨论】:

                    【解决方案20】:

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

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

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

                    还有:

                    git config --global credential.helper wincred
                    

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

                    【讨论】:

                      【解决方案21】:

                      相反的问题,但相关:

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

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

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

                      检查后,我的密码在缓存超时时被遗忘,因此我可以毫不费力地从个人帐户跳转到工作帐户:)

                      在 Linux 和 Visual Studio Code 1.58.2 上。

                      【讨论】:

                        【解决方案22】:

                        您可以参考此链接设置Git credential

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

                        git config --global credential.helper wincred
                        

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

                        【讨论】:

                          【解决方案23】:

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

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

                          【讨论】:

                            【解决方案24】:

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

                            1. 转到 CMD 或终端
                            2. 键入git pull origin master。将 'origin' 替换为您的 remote 名称
                            3. 它将要求提供凭据。输入它。

                            就是这样。我解决了这个问题。

                            【讨论】:

                              【解决方案25】:

                              对于 Windows 10:

                              • windows 键。
                              • 键入 cred,您应该会在控制面板中看到“凭据管理器”
                              • 单击以打开然后删除相关的缓存凭据。然后再试一次。它将要求输入用户 ID 和密码。输入正确的密码就可以了。

                              我更改网络密码时发生了这种情况。

                              【讨论】:

                                【解决方案26】:

                                打开 Visual Studio Code 的用户必须是执行 Git 命令的同一用户。然后在终端中,运行以下命令。

                                git config --global credential.helper store
                                git pull
                                

                                在下一个推送或拉取操作中,您不会看到它要求提供 Git 凭据。

                                【讨论】:

                                • 您提供的答案与其他人相同,但效率不高。
                                【解决方案27】:

                                除了添加上面的 SSH 配置项

                                如果是 Windows

                                Set-Service ssh-agent -StartupType Automatic
                                

                                在 PowerShell 中。

                                现在 Visual Studio Code 不应提示...

                                【讨论】:

                                  【解决方案28】:

                                  如果您使用的是 Windows PC,请安装 Git for Windows。就是这样!

                                  【讨论】:

                                    猜你喜欢
                                    • 1970-01-01
                                    • 2019-09-13
                                    • 2020-08-03
                                    • 2021-04-30
                                    • 1970-01-01
                                    • 2013-01-13
                                    • 1970-01-01
                                    • 1970-01-01
                                    • 1970-01-01
                                    相关资源
                                    最近更新 更多