關於Support for password authentication 報錯的解決方案

xiangzhihong發表於2021-10-02

好久沒有往Github提交程式碼了,今天偶然提交程式碼的時候給報了一個remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.的錯誤,錯誤提示如下。

(yolov4) shl@zhihui-mint:~/shl_res/5_new_project/Yolov4_DeepSocial$ git push origin master
Username for 'https://github.com': shliang0603
Password for 'https://shliang0603@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: unable to access 'https://github.com/shliang0603/Yolov4_DeepSocial.git/': The requested URL returned error: 403
(yolov4) shl@zhihui-mint:~/shl_res/5_new_project/Yolov4_DeepSocial$ 

大概意思就是,你原先的密碼憑證從2021年8月13日開始就不能用了,必須使用個人訪問令牌(personal access token),就是把你的密碼替換成token!

為什麼要把密碼換成token

下面是Github官方的解釋:
近年來,GitHub 客戶受益於 GitHub.com 的許多安全增強功能,例如雙因素身份驗證、登入警報、經過驗證的裝置、防止使用洩露密碼和 WebAuthn 支援。 這些功能使攻擊者更難獲取在多個網站上重複使用的密碼並使用它來嘗試訪問您的 GitHub 帳戶。 儘管有這些改進,但由於歷史原因,未啟用雙因素身份驗證的客戶仍能夠僅使用其GitHub 使用者名稱和密碼繼續對 Git 和 API 操作進行身份驗證。

從 2021 年 8 月 13 日開始,我們將在對 Git 操作進行身份驗證時不再接受帳戶密碼,並將要求使用基於令牌(token)的身份驗證,例如個人訪問令牌(針對開發人員)或 OAuth 或 GitHub 應用程式安裝令牌(針對整合商) GitHub.com 上所有經過身份驗證的 Git 操作。 您也可以繼續在您喜歡的地方使用 SSH 金鑰(如果你要使用ssh金鑰可以參考)。

修改為token的好處:

令牌(token)與基於密碼的身份驗證相比,令牌提供了許多安全優勢:

  • 唯一: 令牌特定於 GitHub,可以按使用或按裝置生成
  • 可撤銷:可以隨時單獨撤銷令牌,而無需更新未受影響的憑據
  • 有限 : 令牌可以縮小範圍以僅允許用例所需的訪問
  • 隨機:令牌不需要記住或定期輸入的更簡單密碼可能會受到的字典型別或蠻力嘗試的影響

如何生成token

1,開啟Github,在個人設定頁面,找到【Setting】,然後開啟找到【Devloper Settting】,如下圖。
在這裡插入圖片描述
然後,選擇個人訪問令牌【Personal access tokens】,然後選中生成令牌【Generate new token】。
在這裡插入圖片描述
在上個步驟中,選擇要授予此令牌token的範圍或許可權。

  • 要使用token從命令列訪問倉庫,請選擇repo
  • 要使用token從命令列刪除倉庫,請選擇delete_repo
  • 其他根據需要進行勾選

然後,點選【Generate token】生成令牌。
在這裡插入圖片描述
在這裡插入圖片描述
生成token後,記得把你的token儲存下來,以便進行後面的操作。把token直接新增遠端倉庫連結中,這樣就可以避免同一個倉庫每次提交程式碼都要輸入token了。

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://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@github.com/shliang0603/Yolov4_DeepSocial.git/

相關文章