当前位置: 首页 > article >正文

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

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



文章目录

  • 解决 GitHub 克隆私有仓库时的身份验证失败问题
    • 1. 问题背景
    • 2. 解决方案:使用 Personal Access Token (PAT) 替代密码
      • 2.1 生成 GitHub 个人访问令牌 (PAT)
      • 2.2 使用令牌克隆私有仓库
      • 2.3 保存身份验证信息(可选)
        • 方法 1:启用 Git 凭据助手
        • 方法 2:使用 GitHub CLI
    • 3. 其他推荐方法:使用 SSH 密钥
      • 设置 SSH 密钥的步骤
    • 4. 常见问题解答
      • 4.1 为什么我输入令牌后仍然失败?
      • 4.2 如何查看已保存的凭据?
      • 4.3 是否可以在多个设备上使用同一个令牌?
    • 5. 总结
    • 6. 参考链接


在使用 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 "your-email@example.com"
    

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

  2. 添加公钥到 GitHub:

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

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

4. 常见问题解答

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

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

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

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

git credential-cache exit

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

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


5. 总结

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

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


6. 参考链接

  • GitHub 官方文档 - HTTPS URLs 身份验证
  • GitHub 官方文档 - 使用 Personal Access Token


http://www.kler.cn/a/407848.html

相关文章:

  • 从〇开始深度学习(0)——背景知识与环境配置
  • webpack基础配置
  • MySQL系列之身份鉴别(安全)
  • 一篇保姆式centos/ubuntu安装docker
  • 后端开发详细学习框架与路线
  • 【Python系列】字典灵活的数据存储与操作
  • uni app下开发AI运动小程序解决方案
  • LDR6020驱动的Type-C接口显示器解决方案
  • (免费送源码)计算机毕业设计原创定制:Java+JSP+HTML+JQUERY+AJAX+MySQL springboot计算机类专业考研学习网站管理系统
  • 数字八股文
  • web——sqliabs靶场——第十二关——(基于错误的双引号 POST 型字符型变形的注入)
  • 数据结构:链表进阶
  • React Native的`react-native-reanimated`库中的`useAnimatedStyle`钩子来创建一个动画样式
  • 【JAVA】Java基础—面向对象编程:常用API与数据结构—常用工具类(Collections、Arrays等)
  • qt自定义虚线并添加进QGridLayout
  • Spring-02-springmvc
  • Failed to start Docker Application Container Engine
  • Java-08 深入浅出 MyBatis - 多对多模型 SqlMapConfig 与 Mapper 详细讲解测试
  • Vue3+SpringBoot3+Sa-Token+Redis+mysql8通用权限系统
  • Elasticsearch面试内容整理-Elasticsearch 版本差异
  • OpenSSH 安装
  • 数据结构-树状数组专题(1)
  • uniapp vue2项目迁移vue3项目
  • 【GoogleChrome】在开发者工具中修改js、css并生效
  • 面向对象高级(3)类中属性赋值与final关键字
  • 【2024 Optimal Control 16-745】Ubuntu22.04 安装Julia