今天提交代碼時,sourceTree 報了一個錯:
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.
大概意思就是我原先的密碼憑證從2021年8月13日開始就不能用了,必須使用個人訪問令牌(personal access token),就是把你的密碼替換成token!
那么,問題來了, github為什么要把密碼換成 personal access token?
1、修改為token的動機
我們描述了我們的動機,因為我們宣布了對 API 身份驗證的類似更改,如下所示:
近年來,GitHub 客戶受益于 GitHub.com 的許多安全增強功能,例如雙因素身份驗證、登錄警報、經(jīng)過驗證的設(shè)備、防止使用泄露密碼和 WebAuthn 支持。 這些功能使攻擊者更難獲取在多個網(wǎng)站上重復(fù)使用的密碼并使用它來嘗試訪問您的 GitHub 帳戶。 盡管有這些改進,但由于歷史原因,未啟用雙因素身份驗證的客戶仍能夠僅使用其GitHub 用戶名和密碼繼續(xù)對 Git 和 API 操作進行身份驗證。
從 2021 年 8 月 13 日開始,我們將在對 Git 操作進行身份驗證時不再接受帳戶密碼,并將要求使用基于令牌(token)的身份驗證,例如個人訪問令牌(針對開發(fā)人員)或 OAuth 或 GitHub 應(yīng)用程序安裝令牌(針對集成商) GitHub.com 上所有經(jīng)過身份驗證的 Git 操作。 您也可以繼續(xù)在您喜歡的地方使用 SSH 密鑰(如果你要使用ssh密鑰可以參考)。
2、修改為token的好處
令牌(token)與基于密碼的身份驗證相比,令牌提供了許多安全優(yōu)勢:
唯一: 令牌特定于 GitHub,可以按使用或按設(shè)備生成
可撤銷:可以隨時單獨撤銷令牌,而無需更新未受影響的憑據(jù)
有限 : 令牌可以縮小范圍以僅允許用例所需的訪問
隨機:令牌不需要記住或定期輸入的更簡單密碼可能會受到的字典類型或蠻力嘗試的影響
解決方案:
生成自己的token
1、在個人設(shè)置頁面,找到Setting

2、在左側(cè)列表中,選擇開發(fā)者設(shè)置Developer setting

3、選擇個人訪問令牌Personal access tokens,然后選中生成令牌Generate new token

4、設(shè)置token的有效期,訪問權(quán)限等
選擇要授予此令牌token的范圍或權(quán)限。
要使用token從命令行訪問倉庫,請選擇repo。
要使用token從命令行刪除倉庫,請選擇delete_repo
其他根據(jù)需要進行勾選

5、生成令牌Generate token

token生成成功!

注意:
記得把你的token保存下來,因為你再次刷新網(wǎng)頁的時候,你已經(jīng)沒有辦法看到它了,所以我還沒有徹底搞清楚這個token的使用,后續(xù)還會繼續(xù)探索!
6、之后用自己生成的token登錄,把上面生成的token粘貼到輸入密碼的位置,然后成功push代碼!
也可以 把token直接添加遠程倉庫鏈接中,這樣就可以避免同一個倉庫每次提交代碼都要輸入token了:
(1) 在sourceTree中操作,點擊右上角設(shè)置

(2) 編輯遠程倉庫鏈接

git remote set-url origin https://<your_token>@github.com/<USERNAME>/<REPO>.git
<your_token>:換成你自己得到的token
<USERNAME>:是你自己github的用戶名
<REPO>:是你的倉庫名稱
例如:
git remote set-url origin https://ghp_xxxxxxxxxxxxxxxxxx@github.com/ZhangSan/TestProj.git/