0x00前言
昨天,当我想将项目push
到库的时候,按照以前一样输入账号和密码发生了如下的问题:
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: 无法访问 'https://github.com/xxx/xxx.git/':The requested URL returned error: 403
这个问题是由于github
官方发布了一则安全性改动:从2021年8月13日开始,不接受用户密码的方式进行git操作验证。
具体可以参考官方消息
0x01这个问题的影响范围
- 命令行方式操作涉及到用户校验的都会被限制:比如
git push
- git桌面端程序
解决方法:官方给出了两种认证方法:验证码
、个人令牌(personal access token)
0x02个人令牌好处
个人令牌好处多多:
- 唯一性(Unique)令牌只针对GitHub站点生效,对gitlab(反华急先锋gitlab,打死不用)没效果,同时可以只针对用户或者设备。
- 可撤销性(Revocable)令牌能够随时撤销,同时不需要你修改账户信息?
- 有限性(Limited)令牌能够做到权限控制
- 随机性(Random)拒绝字典破解,拒绝猜测破解
总之两个字概括:安全
0x03生成个人令牌
- 验证邮箱,验证过看下面操作。
- 在任何页面的右上角,点击您的个人资料照片,然后点击
setting(设置)
。 - 在左侧边栏中,点击
Developer settings(开发人员设置)
。 - 在左侧边栏中,单击
Personal access tokens(个人访问令牌)
。 - 单击
Generate new token(生成新令牌)
。 - 为您的令牌指定一个描述性名称
(Note)
。 - 要让您的令牌到期,请选择到期下拉菜单,然后单击默认值或使用日历选择器。
- 选择您要授予此令牌的范围或权限。要使用您的令牌从命令行访问存储库,请选择所有带有
repo
的选项。 - 单击生成令牌,随后九生成了如下的个人令牌
0x04使用个人令牌
个人令牌一定要复制!复制!复制!,生成完令牌只会显示一次。
在命令行中输入:
$ git push origin master
Username for 'https://github.com': xxx
Password for 'https://xxx@github.com': [你的令牌粘贴在这里]
枚举对象中: 5, 完成.