我开始使用 Visual Studio Code,并尝试将我的测试项目保存到 GitHub,但 Visual Studio Code 总是要求我提供 GitHub 凭据。
我已在我的 PC GitHub Desktop 和 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
这是询问凭据的弹出窗口:
https://i.stack.imgur.com/l5SIE.png
我在弹出窗口中输入了我的 GitHub 凭据,但在 Visual Studio Code 的 Git 输出窗口中仍然出现此错误:
remote: Anonymous access to ddieppa/LineOfBizApp.git denied.
fatal: Authentication failed for 'https://github.com/ddieppa/LineOfBizApp.git/'
为什么 Visual Studio Code 要求输入密码?因为 Visual Studio Code 运行自动提取功能,而 Git 服务器没有任何信息来授权您的身份。它发生在:
您的 Git 存储库有一个 https 远程 URL。是的!这种遥控器绝对每次都会问你。这里没有例外! (您可以像下面的解决方案那样做一个临时技巧来缓存授权,但不建议这样做。)
您的 Git 存储库具有 ssh 远程 URL,但您尚未将 ssh 公钥复制到 Git 服务器上。使用 ssh-keygen 生成您的密钥并将其复制到 Git 服务器。完毕!此解决方案还可以帮助您不再在终端上重新输入密码。在这里查看@Fnatical 的一个很好的说明以获得答案。
此答案末尾的更新部分对您根本没有帮助。 (它实际上让你的工作流程停滞不前。)它只会阻止 Visual Studio Code 中发生的事情,并将这些事情转移到终端。
对不起,如果这个糟糕的答案已经影响了你很长很长时间。
原始答案(坏)
我在 Visual Studio Code document 上找到了解决方案:
提示:您应该设置一个凭证助手,以避免每次 VS Code 与您的 Git 远程对话时都要求您提供凭证。如果您不这样做,您可能需要考虑在 ... 菜单中禁用 Autofetch 以减少您收到的提示数量。
因此,打开凭证助手,以便 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 store 然后验证是否需要: git config --global credential.helper store
使用从 here 引用的 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。
更详细的示例和高级用法是 here。
注意:用户名和密码未加密并以纯文本格式存储,因此只能在您的个人计算机上使用。
store
做到了。
https
更改为 ssh
并使用 ssh 密钥作为替代方案。
您应该能够像这样设置您的凭据:
git remote set-url origin https://<USERNAME>:<PASSWORD>@bitbucket.org/path/to/repo.git
您可以像这样获取远程 URL:
git config --get remote.origin.url
我所要做的就是运行这个命令:
git config --global credential.helper wincred
然后我被提示输入密码两次。
下次它在没有提示我输入密码的情况下工作。
store
而不是 wincred
。
git config --global credential.helper 'cache --timeout==1209600'
使其持续 2 周,而不是默认的 15 分钟。来源:help.github.com/en/github/using-git/…
store
将其永久存储在磁盘上。另外,我之前的评论有一个错误:不要使用==
,使用=
。编辑太晚了。
通常,您可以使用内置的凭证存储设施:
git config --global credential.helper store
或者,如果您使用的是 Windows,则可以使用他们的凭据系统:
git config --global credential.helper wincred
或者,如果您使用的是 macOS,则可以使用他们的凭证系统:
git config --global credential.helper osxkeychain
在大多数情况下,第一个解决方案是最佳的。
以下步骤将引导您完成如何:
生成 SSH 密钥(无密码**) 将步骤 1 中生成的公钥添加到您的 Git 存储库 确认上述步骤已成功完成 进行第一次提交(无需提供用户名/密码)
**如果您的工作特别敏感,那么在没有密码的情况下生成 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:
猫 /home/bob/.ssh/id_rsa.pub
将现在显示在终端窗口中的整个公钥复制到剪贴板
转到 https://github.com 并登录
单击屏幕右上角的用户图标,然后选择设置
单击 SSH 和 GPG 密钥
单击新建 SSH 密钥
输入标题,将复制到剪贴板的公钥粘贴到第一个项目符号中,然后单击添加 SSH 密钥
确认以上步骤:
ssh -T git@github.com
是的
你好 !您已成功通过身份验证,但 GitHub 不提供 shell 访问权限。
第一次提交/推送,无需输入用户名/密码:
触摸测试.txt
git add test.txt
git commit - 打开编辑器,输入消息并保存文件。如果 vi 是您的编辑器,请在文件打开后按 I,输入消息,按 Esc,然后输入 :x 以保存更改。
git 推送
您可能遇到的唯一问题是当您尝试 SSH 到 GitHub 时。此链接将提供一些帮助 -
错误:代理承认未能签名
狩猎愉快!
尝试安装“Git Credential Manager For Windows”(并按照设置 credential manager 的说明进行操作)。
在使用 Git 的应用程序(例如,Visual Studio Code)中需要时,它将“magically”打开 Visual Studio Team Services 凭据输入所需的对话框。
ssh-agent
。但是 VS Code 在 Linux 上似乎忽略了这一点。
使用 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/
如何将 SSH 密钥添加到 GitHub 帐户?
登录 GitHub 帐户
点击右上角的rancher(设置)GitHub账号设置http://git-scm.com/docs/gitcredentials
单击 SSH 密钥
单击添加 ssh 密钥
粘贴您的密钥并保存
你们都准备好了:-)
自动 Git 身份验证。从 v1.45 Release Notes 开始:
GitHub 存储库的 GitHub 身份验证 VS Code 现在具有针对 GitHub 存储库的自动 GitHub 身份验证。现在,您无需在系统中配置任何凭证管理器即可克隆、拉取、推送到公共和私有存储库以及从这些存储库中推送。即使是在集成终端中调用的 Git 命令,例如 git push,现在也会自动针对您的 GitHub 帐户进行身份验证。您可以使用 git.githubAuthentication 设置禁用 GitHub 身份验证。您还可以使用 git.terminalAuthentication 设置禁用终端身份验证集成。
.gitconfig
中的 askpass = /usr/bin/ksshaskpass
,因此我每次都被询问用户名和密码。随着 1.45 版角色在更多机器上的推出,这可能会得到更多人的支持。
对于 Windows 10:转到控制面板 → 凭据管理器 → Windows 凭据 → 单击 Git 链接,→ 编辑 → 更新到新密码。那应该行得通。
Ubuntu 用户只需在 Visual Studio Code 的终端中输入以下命令:
git config --global credential.helper store
现在,输入一次您的用户名和密码,之后就不会再询问您了。
笔记:
用户名和密码未加密并以纯文本格式存储,因此请谨慎使用。但是,如果您的密码包含一些特殊字符,如@、#、&、* 等,那么这些字符将被加密。
此外,您可以在家中找到您的“.git-credentials”文件。它是隐藏的,因此请确保启用隐藏文件。
位置:~/.git-credentials
我在 Visual Studio Code 和 Ubuntu 20.04(Focal Fossa)上运行了它:
它自动解决了定期询问凭据问题:
git config --global credential.helper store
使用不带密码的 SSH 密钥。
也许这对某些人来说是显而易见的(对我来说不是)。如果您绝对需要密码,它也不能解决问题,但在我在 Mac 上的情况下,这是一个不错的折衷方案。
我通常运行这个简单的命令来将 Git 远程 URL 从 HTTPS 更改为 SSH:
git remote set-url origin git@github.com:username/repo-name-here.git
这就是我在计算机上解决问题的方法:
打开 Visual Studio Code 转到菜单 File → Preferences → Settings 在 User 选项卡下,展开 Extensions 并在右侧窗格中选择 Git Find Autofetch 并取消选中它
我设法通过执行以下步骤来阻止这种情况。
卸载 GitHub Desktop(我不确定这是否必要) 卸载凭据管理器:cd "C:\Program Files\Git\mingw64\libexec\git-core" 后跟 git-credential-manager.exe 卸载重置凭据帮助程序以使用wincred: git config --global credential.helper wincred 使用 Visual Studio Code 推送一些更改并重新输入凭据。
注意:我使用个人访问令牌作为密码。
通过以下步骤解决问题。
卸载软件 Visual Studio Code 和 Git 并重新安装。将 Git 存储库克隆 URL 从 SSH 更改为 HTTPS。
我在 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 凭据,问题就解决了。
相反的问题,但相关:
在我的情况下,即使缓存帮助程序超时已经过期,我也在努力使用 Visual Studio Code 集成终端不要忘记输入的密码。
不过,外部终端会话工作正常。
我发现 Visual Studio Code 中恰好有一个选项,它允许您在实际的 Git 插件之上设置一个可选缓存,这不允许发生预期的行为。
https://i.stack.imgur.com/Fxszg.png
检查后,我的密码在缓存超时时被遗忘,因此我可以毫不费力地开始从个人帐户跳转到工作帐户:)
在 Linux 和 Visual Studio Code 1.58.2 上。
您可以参考此链接来设置 Git credential。
您可以运行以下命令来保存您的 Git 凭据。您无需在每次运行 Git 命令时都输入用户名和密码(适用于 Windows):
git config --global credential.helper wincred
对于 Mac / Linux,请参阅 Git Credential Manager for Mac and Linux 了解如何保存 Git 凭据。
对我来说,我已经使用 SSH 密钥设置了我的远程存储库,但 Git 找不到它们,因为 HOMEDRIVE 环境变量由于我公司的域策略而自动设置为网络共享。在启动 code .
之前在我的 shell 中更改该环境变量会导致 Visual Studio Code 继承正确的环境变量,并且在 Git 输出窗口中不再出现连接错误。
现在我只需要弄清楚如何覆盖域策略,因此 HOMEDRIVE 始终指向我的本地 c:\users\marvhen
目录,这是 .ssh
目录的默认位置。
我以简单的方式解决了类似的问题:
转到 CMD 或终端类型 git pull origin master。将 'origin' 替换为您的远程名称它将要求提供凭据。键入它。
就这样。我解决了这个问题。
对于 Windows 10:
按窗口键。
键入 cred,您应该会在控制面板中看到“凭据管理器”
单击以打开,然后删除相关的缓存凭据。然后再试一次。它将要求输入用户 ID 和密码。输入正确的密码,你会很好。
当我更改我的网络密码时,它发生在我身上。
打开 Visual Studio Code 的用户必须是执行 Git 命令的同一用户。然后在终端中,运行以下命令。
git config --global credential.helper store
git pull
在下一个推送或拉取操作中,您不会看到它要求提供 Git 凭据。
除了添加上面的 SSH 配置条目
如果 Windows
Set-Service ssh-agent -StartupType Automatic
在 PowerShell 中。
现在 Visual Studio Code 不应提示...
git config --global credential.helper cache
。查看 git-scm.com/book/gr/v2/Git-Tools-Credential-Storage 了解更多详情。