问题
时间2021-11-21日,将java学习笔记推送到github上报错:
(base) Eistert-2:eistert-java-study-note eistert$ git push -u origin main
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/eistert/eistert-java-study-note.git/'
原因&&动机
原因正如github提示的一样,从2021年8月13号起,github就要取消掉了账号密码模式来对仓库进行操作。
该用token了。
点击给出的提示连接:
https://github.com/eistert/eistert-java-study-note.git/
进入github解决页面;
可以看到这一段改成token模式的动机:
用google翻译过来可以参考一下:
1、修改为token的动机
我们描述了我们的动机,因为我们宣布了对 API 身份验证的类似更改,如下所示:
近年来,GitHub 客户受益于 GitHub.com 的许多安全增强功能,例如双因素身份验证、登录警报、经过验证的设备、防止使用泄露密码和 WebAuthn 支持。 这些功能使攻击者更难获取在多个网站上重复使用的密码并使用它来尝试访问您的 GitHub 帐户。 尽管有这些改进,但由于历史原因,未启用双因素身份验证的客户仍能够仅使用其GitHub 用户名和密码继续对 Git 和 API 操作进行身份验证。
从 2021 年 8 月 13 日开始,我们将在对 Git 操作进行身份验证时不再接受帐户密码,并将要求使用基于令牌(token)的身份验证,例如个人访问令牌(针对开发人员)或 OAuth 或 GitHub 应用程序安装令牌(针对集成商) GitHub.com 上所有经过身份验证的 Git 操作。 您也可以继续在您喜欢的地方使用 SSH 密钥(如果你要使用ssh密钥可以参考)。
2、修改为token的好处
-
令牌(token)与基于密码的身份验证相比,令牌提供了许多安全优势:
-
唯一: 令牌特定于 GitHub,可以按使用或按设备生成
-
可撤销:可以随时单独撤销令牌,而无需更新未受影响的凭据
-
有限 : 令牌可以缩小范围以仅允许用例所需的访问
-
随机:令牌不需要记住或定期输入的更简单密码可能会受到的字典类型或蛮力尝试的影响
解决方法
生成自己的token
点击图中的连接,官方已经给出了解决方法
https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token
1.Verify your email address, if it hasn’t been verified yet.
2.In the upper-right corner of any page, click your profile photo, then click Settings.
3.In the left sidebar, click Developer settings.
4.In the left sidebar, click Personal access tokens.
5.Click Generate new token.
6.Give your token a descriptive name.
7.To give your token an expiration, select the Expiration drop-down menu, then click a default or use the calendar picker.
8.Select the scopes, or permissions, you’d like to grant this token. To use your token to access repositories from the command line, select repo.
9.Click Generate token.
10.当你推送代码的时候,就会要你输入账号和密码,密码就是你刚才生成的token.
也可以 把token直接添加远程仓库链接中,这样就可以避免同一个仓库每次提交代码都要输入token了:
git remote set-url origin https://<your_token>@github.com/<USERNAME>/<REPO>.git
- <your_token>:换成你自己得到的token
- :是你自己github的用户名
- :是你的仓库名称
例如:
git remote set-url origin https://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@github.com/shliang0603/Yolov4_DeepSocial.git/
四、 常见问题
有些问题我也没有遇到过,大家共同探讨吧,我会在评论区把大家遇到的问题做个汇总!
1、如果 push 等操作没有出现输入密码选项,请先输入如下命令,之后就可以看到输入密码选项了
git config --system --unset credential.helper
参考与引用
github开发人员在七夕搞事情:remote: Support for password authentication was removed on August 13, 2021.
https://blog.csdn.net/weixin_41010198/article/details/119698015
Creating a personal access token
https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token
Token authentication requirements for Git operations
https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/