如何解决 Git 总是提示输入 HTTP(S) 认证用户凭据的问题?


简介

Git 是一种分布式版本控制系统,允许软件开发人员跟踪和管理其代码的更改。它由 Linus Torvalds 创建,他也是 Linux 操作系统的创建者。

Git 已成为现代软件开发中必不可少的工具,因为它能够管理大型代码库、促进团队之间的协作以及维护更改历史记录。Git 允许开发人员同时处理其代码的多个版本,而无需担心冲突或丢失进度。

这是通过使用 Git 中的分支和合并功能实现的。分支允许开发人员创建其代码的独立版本,而不会影响主分支,而合并则可以无缝地将不同的分支组合在一起。

HTTP(S) 认证及其在 Git 使用中的作用

为了使用 Git 与远程存储库交互,通常需要 HTTP(S) 认证。此认证过程涉及在向远程存储库发出请求时通过 HTTPS 发送用户凭据(例如用户名和密码)。

认证对于维护存储库的安全性和访问控制非常重要。如果没有适当的认证措施,任何人都可能对存储库进行未经授权的更改或查看敏感信息。

问题陈述:Git 总是提示输入 HTTP(S) 认证用户凭据

在使用 Git 处理远程存储库时,用户遇到的一个常见问题是每次尝试进行 HTTPS 请求时都会不断提示输入用户凭据。这可能会令人沮丧且耗时,尤其是在处理多个存储库或频繁发出请求时。

此错误可能有多种原因,从错误的配置设置到过期的或无效的凭据。幸运的是,有一些简单的解决方案可以帮助您解决此问题,并让您在没有中断的情况下继续编码。

了解问题

Git 如何处理 HTTP(S) 请求的认证

Git 是开发人员用来管理和跟踪其代码库更改的流行版本控制系统。使用 Git 时,通常会与托管在服务器上的远程存储库(例如 GitHub 或 Bitbucket)进行交互。

可以通过 HTTP 或 HTTPS 协议访问这些存储库,在执行任何操作之前都需要进行认证。Git 通过在每次请求中以用户名和密码的形式发送凭据来处理 HTTP(S) 请求的认证。

当这些凭据得到验证后,Git 允许访问远程存储库。但是,如果凭据无效或已过期,Git 将提示用户再次输入其凭据。

问题的常见原因

Git 总是提示输入 HTTP(S) 认证用户凭据的一个常见原因是远程存储库 URL 配置不正确。如果 URL 不正确或自上次使用以来已更改,则 Git 将无法正确进行认证,并会提示输入新的凭据。

另一个可能的原因是凭据无效或已过期。例如,如果用户在服务器端更新了密码,但在其本地 Git 配置设置中没有更新,则他们将不断被提示输入旧密码。

同样,如果用户帐户已从服务器端停用或删除,但在其本地设置中仍然存在,则他们可能会遇到认证问题。与某些操作系统或网络配置的不兼容性也可能导致认证问题。

例如,某些防火墙可能会阻止来自 Git 用于 HTTP(S) 请求的某些端口的出站流量。此外,某些操作系统可能不支持 Git 在通过 HTTPS 连接传输敏感信息(如密码)时使用的某些加密方法。

解决方案 1:更新远程存储库 URL

可能有效的简单修复

我们将讨论的第一个解决方案是更新远程存储库 URL。此解决方案适用于由于错误或过时的 URL 导致 Git 无法与远程存储库进行认证的情况。更新 URL 应该允许 Git 在无需提示用户凭据的情况下与远程存储库进行认证。

要更新远程存储库 URL,您可以使用 Git 的 config 命令,并根据您是要全局更新 URL 还是为特定存储库本地更新 URL 而使用 --global 或 --local 选项。命令将采用以下格式:

git config [--global | --local] remote.origin.url new-url 

使用此命令更新 URL 后,您可以尝试使用 Git 命令(如 fetch 或 pull)访问远程存储库,以验证它是否按预期工作。

如果认证成功且未提示输入用户凭据,那么恭喜!您已解决此问题!

解决方案 2:使用凭据助手缓存凭据

节省时间的简单解决方案

我们将讨论的第二个解决方案涉及使用 Git 的凭据助手在您的计算机上本地缓存用户凭据。如果您经常与使用 HTTP(S) 认证的远程存储库进行交互并且不想每次都输入用户名和密码,则此解决方案效果很好。

Git 的凭据助手提供了一种缓存您的凭据的方法,以便在您与特定服务器交互时自动使用它们。助手通过将您的凭据存储在您本地计算机上的加密文件中来工作,以便在需要时可以自动检索它们。

要启用凭据助手以在您的计算机上缓存凭据,您需要运行以下命令:

git config [--global | --local] credential.helper cache 

如果您使用 --global 选项,则这将全局(对于所有存储库)启用凭据缓存。如果您选择使用 --local 选项,则凭据缓存将仅在本地(对于特定存储库)启用。

启用后,Git 将缓存您的凭据,默认持续时间为 15 分钟。您可以使用 --timeout 选项更改此时间段,例如:

git config [--global | --local] credential.helper 'cache --timeout=3600' 

此命令将超时设置为一小时(3600 秒),之后 Git 将再次提示您输入凭据。

解决方案 3:生成个人访问令牌 (PAT)

提供更多控制的更安全解决方案

我们将讨论的第三个解决方案是生成个人访问令牌 (PAT)。当您认为密码认证风险过高并希望更好地控制 Git 如何与使用 HTTP(S) 认证的远程存储库交互时,建议使用此解决方案。

PAT 是在进行 Git 认证时使用密码的替代方案。它们提供了一种更安全的认证方式,因为它们可以创建具有特定权限和过期日期。

要生成个人访问令牌,您需要登录到您的 Git 提供商的网站并按照其说明进行操作。例如,如果您使用的是 GitHub,请导航到您的帐户设置,从左侧边栏菜单中选择“开发者设置”,然后选择“个人访问令牌”。

然后,单击“生成新令牌”按钮并按照提示进行操作。生成 PAT 后,您可以将其用于 HTTP(S) 认证,方法是在需要基本认证的任何 Git 命令中使用它替换您的密码。

结论

修复 Git 在使用 HTTP(S) 认证时不断请求用户凭据的问题,涉及首先了解导致问题的原因,并确定哪种解决方案最适合您的需求。更新远程存储库 URL 非常简单,但有时是唯一需要的;使用凭据助手缓存凭据可以节省您的时间;而生成个人访问令牌是最安全的,并且提供更多控制。无论您选择哪种方法,修复此问题都会极大地提高您使用 Git 的效率。

更新时间: 2023 年 6 月 5 日

6K+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告