修改 Github 提交代码时的认证方式

有一个 Github 代码仓库,提交时报下面的错误

1
2
3
4
5
6
$ git push
Username for 'https://github.com': cocowool@qq.com
Password for 'https://cocowool@qq.com@github.com':
remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.
remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information.
fatal: Authentication failed for 'https://github.com/cocowool/wave.git/'

这是因为 Github 从2021年8月13日之后,在相关操作身份验证时,不再接受纯账户加密码的形式(因为不太安全),强制要求开发者使用基于令牌的认证方式。

Github 提供了两种 Token 方式

  • Fine-grained tokens,这种方式允许我们生成细粒度的 Token,例如仅能控制一个 Repo 等等
  • Token(classic),这种是比较经典的方式,这种方式也能够针对不同分类设置权限,但是不能够针对不同的 repo 设置权限

根据 Github 的官方文档 创建个人访问令牌 我们可以在 Settings -> Developer Settings -> Personal access tokens 中生成特定权限和有效期的令牌,生成后将令牌复制下来以备后面步骤使用。

然后再重新 git push 的时候,在密码栏位输入从 Github 页面获取的 Token 就可以。

1
2
3
4
5
6
7
8
9
10
11
12
$ git push
Username for 'https://github.com': cocowool@qq.com
Password for 'https://cocowool@qq.com@github.com':
Enumerating objects: 14, done.
Counting objects: 100% (14/14), done.
Delta compression using up to 12 threads
Compressing objects: 100% (10/10), done.
Writing objects: 100% (10/10), 1016 bytes | 1016.00 KiB/s, done.
Total 10 (delta 6), reused 0 (delta 0)
remote: Resolving deltas: 100% (6/6), completed with 3 local objects.
To https://github.com/cocowool/wave.git
f6664a5..5f663bd main -> main

如果上面的步骤没法解决你的问题,可以尝试重新设置 git 的全局认证方式

1
$ git config --global --unset credential.helper

参考资料

  1. 解决GitHub密码授权访问即将失效的问题
  2. github使用pull或push失效,需要改用token登录的流程

cocowool

A FULL STACK DREAMER!