Bootstrap

解决 GitHub 克隆私有仓库时的身份验证失败问题

解决 GitHub 克隆私有仓库时的身份验证失败问题




在使用 Git 克隆私有仓库时,你可能会遇到类似如下的报错:

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/username/repository.git/'

这是因为 GitHub 在 2021 年 8 月 13 日后停止支持通过用户名和密码进行身份验证,而是要求开发者使用更安全的认证方式,如 Personal Access Token (PAT)。本文将详细介绍这个问题的原因及解决方法。


1. 问题背景

GitHub 曾允许通过 HTTPS URL 的用户名和密码组合来克隆、推送和拉取代码。为了提升安全性,现在推荐以下身份验证方式:

  1. 使用 Personal Access Token (PAT) 替代密码。
  2. 配置 SSH 密钥 用于免密码访问。

如果尝试使用传统用户名/密码方式克隆私有仓库,你将收到上述错误提示。


2. 解决方案:使用 Personal Access Token (PAT) 替代密码

2.1 生成 GitHub 个人访问令牌 (PAT)

按照以下步骤生成你的 Personal Access Token:

  1. 登录 GitHub 网站。
  2. 点击右上角头像,选择 Settings(设置)。
  3. 在左侧导航栏选择 Developer settings
  4. 点击 Personal access tokensTokens (classic)Generate new token
  5. 设置令牌的详细信息:
    • Note(备注):为令牌命名,例如 Git Clone Token
    • Expiration(有效期):选择令牌的有效期(例如:30 天、无过期)。
    • Scopes(权限范围):勾选 repo(访问私有仓库所需的权限)。
  6. 点击 Generate token,生成令牌。
  7. 复制令牌:请务必保存生成的令牌,因为它只会显示一次。如果丢失,你需要重新生成。

2.2 使用令牌克隆私有仓库

现在,用你的 Personal Access Token 替代密码,重新尝试克隆:

运行以下命令:

git clone https://github.com/username/repository.git

Git 会提示输入 用户名密码

  • 用户名:输入你的 GitHub 用户名,例如 username
  • 密码:输入生成的 Personal Access Token。

示例:

Username for 'https://github.com': your-username
Password for 'https://github.com': your-personal-access-token

如果操作正确,你将成功克隆私有仓库。


2.3 保存身份验证信息(可选)

如果不希望每次都输入令牌,你可以将身份验证信息存储到本地:

方法 1:启用 Git 凭据助手

执行以下命令,启用全局凭据存储:

git config --global credential.helper store

完成后,当你首次输入令牌时,Git 会将凭据保存在本地,无需再次输入。

方法 2:使用 GitHub CLI

你也可以通过 GitHub CLI 工具直接登录并管理认证。安装后,运行以下命令:

gh auth login

按照提示选择 HTTPS 登录并输入令牌,CLI 将帮你完成认证配置。


3. 其他推荐方法:使用 SSH 密钥

除了 Personal Access Token,SSH 密钥也是一种安全高效的认证方式。它的优点在于设置一次即可免密码访问,适用于频繁操作的开发者。

设置 SSH 密钥的步骤

  1. 生成 SSH 密钥:

    ssh-keygen -t rsa -b 4096 -C "[email protected]"
    

    按提示保存密钥文件,设置密码可选。

  2. 添加公钥到 GitHub:

    • 打开 GitHub 的 SettingsSSH and GPG keys
    • 点击 New SSH key,粘贴公钥内容(通常位于 ~/.ssh/id_rsa.pub)。
  3. 配置 Git 使用 SSH:
    克隆仓库时使用 SSH URL:

    git clone [email protected]:username/repository.git
    

4. 常见问题解答

4.1 为什么我输入令牌后仍然失败?

  • 确保你为令牌赋予了 repo 权限,这对于访问私有仓库是必需的。
  • 确保复制的令牌正确,且未过期。

4.2 如何查看已保存的凭据?

在凭据助手启用后,你可以通过以下命令查看已存储的身份信息:

git credential-cache exit

4.3 是否可以在多个设备上使用同一个令牌?

可以,只要你的令牌权限足够,且在有效期内,都可以在不同设备上使用。


5. 总结

GitHub 弃用用户名和密码认证后,我们需要使用更安全的方式来访问私有仓库。Personal Access Token (PAT) 是替代方案之一,通过简单的设置即可解决认证问题。如果你有更高的安全需求或更频繁的操作需求,也可以考虑使用 SSH 密钥 进行免密码访问。

通过以上方法配置后,你应该能够顺利克隆、推送和拉取私有仓库,同时享受更安全的开发体验!


6. 参考链接


;