問(wèn)題描述
今天我像往常那樣提交Github代碼局雄,發(fā)現(xiàn)竟然報(bào)了下面的錯(cuò)誤:
$ git 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: unable to access 'https://github.com/<USERNAME>/<REPO>.git': The requested URL returned error: 403
意思是從2021年8月13日以后,不再支持用戶(hù)名密碼的方式驗(yàn)證了存炮,需要使用個(gè)人訪問(wèn)令牌(personal access token)炬搭,也就是把你的密碼替換成了token。
官方解釋
https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/
1穆桂、修改為token的動(dòng)機(jī)
近年來(lái)宫盔,GitHub 客戶(hù)受益于 GitHub.com 的許多安全增強(qiáng)功能,例如雙因素身份驗(yàn)證享完、登錄警報(bào)灼芭、經(jīng)過(guò)驗(yàn)證的設(shè)備、防止使用泄露密碼和 WebAuthn 支持般又。 這些功能使攻擊者更難獲取在多個(gè)網(wǎng)站上重復(fù)使用的密碼并使用它來(lái)嘗試訪問(wèn)您的 GitHub 帳戶(hù)彼绷。 盡管有這些改進(jìn)巍佑,但由于歷史原因,未啟用雙因素身份驗(yàn)證的客戶(hù)仍能夠僅使用其GitHub 用戶(hù)名和密碼繼續(xù)對(duì) Git 和 API 操作進(jìn)行身份驗(yàn)證苛预。
從 2021 年 8 月 13 日開(kāi)始句狼,我們將在對(duì) Git 操作進(jìn)行身份驗(yàn)證時(shí)不再接受帳戶(hù)密碼笋熬,并將要求使用基于令牌(token)的身份驗(yàn)證热某,例如個(gè)人訪問(wèn)令牌(針對(duì)開(kāi)發(fā)人員)或 OAuth 或 GitHub 應(yīng)用程序安裝令牌(針對(duì)集成商) GitHub.com 上所有經(jīng)過(guò)身份驗(yàn)證的 Git 操作。 您也可以繼續(xù)在您喜歡的地方使用 SSH 密鑰(如果你要使用ssh密鑰可以參考)胳螟。
2昔馋、修改為token的好處
令牌(token)與基于密碼的身份驗(yàn)證相比,令牌提供了許多安全優(yōu)勢(shì):
唯一: 令牌特定于 GitHub糖耸,可以按使用或按設(shè)備生成秘遏。
可撤銷(xiāo):可以隨時(shí)單獨(dú)撤銷(xiāo)令牌,而無(wú)需更新未受影響的憑據(jù)嘉竟。
有限: 令牌可以縮小范圍以?xún)H允許用例所需的訪問(wèn)邦危。
隨機(jī):令牌不需要記住或定期輸入的更簡(jiǎn)單密碼可能會(huì)受到的字典類(lèi)型或蠻力嘗試的影響。
解決方法
1)在個(gè)人設(shè)置頁(yè)面舍扰,點(diǎn)擊Settings (官方參考)
2)進(jìn)入頁(yè)面后倦蚪,點(diǎn)擊左側(cè)的Developer settings
3)點(diǎn)擊Personal access tokens(個(gè)人訪問(wèn)令牌)
4)點(diǎn)擊Generate new token
5)設(shè)置token的有效期,訪問(wèn)權(quán)限等
選擇要授予此令牌token的范圍或權(quán)限边苹。
- 要使用token從命令行訪問(wèn)倉(cāng)庫(kù)陵且,請(qǐng)選擇repo。
- 要使用token從命令行刪除倉(cāng)庫(kù)个束,請(qǐng)選擇delete_repo慕购。
- 其他根據(jù)需要進(jìn)行勾選。
6)點(diǎn)擊Generate token生成令牌
如下是生成的令牌茬底,記得保存沪悲,下次就看不到了。
使用令牌
用法一:直接將token作為密碼使用
在需要輸入密碼的地方阱表,換成token殿如,然后成功push代碼!
用法二:修改現(xiàn)有項(xiàng)目的url
git remote set-url origin https://<TOKEN>@github.com/<USERNAME>/<REPO>.git
將<TOKEN>換成你自己得到的令牌捶枢。<USERNAME>是你自己github的用戶(hù)名握截,<REPO>是你的項(xiàng)目名稱(chēng),比如:
git remote set-url origin https://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@github.com/zhy001/xxx_project.git
嫌麻煩的話烂叔,可以直接編輯項(xiàng)目中.git/config
文件谨胞,在url中添加token,保存即可蒜鸡。
用法三:在克隆項(xiàng)目的時(shí)候在github.com前面加個(gè)令牌
git clone https://<TOKEN>@github.com/<USERNAME>/<REPO>.git
其實(shí)胯努,就是在git項(xiàng)目的配置文件中增加了記錄:
$ git clone https://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@github.com/zhy001/xxx_project.git
$ cat xxx_project/.git/config
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
[remote "origin"]
url = https://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@github.com/zhy001/xxx_project.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
因此牢裳,已克隆的項(xiàng)目修改.git/config
中的url也是可以的。