一. 問題描述
使用如下命令推送代碼到 github
:
git push 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.
根據提示信息可以知道,github
在 2021.8.13
移除了密碼認證的支持,它建議使用 personal access token
代替密碼認證。由于提示中給出的地址無法訪問,所以查閱相關文檔,下面主要記錄一下如何解決這個問題。
二. 解決方法
github docs 文檔中描述說,在使用命令行或API的時候,應該創建一個個人訪問令牌(personal access token)來代替密碼,下面詳細介紹如何創建 personal access token
。
創建 personal access token
- 登錄 github
- 在頁面右上角點擊你的頭像,然后點擊
Settings
:
image.png -
在左側邊欄中,點擊開發人員設置:
image.png -
在左側邊欄中,單擊個人訪問令牌:
image.png -
單擊生成新令牌:
image.png -
為您的令牌指定一個描述性名稱:
image.png -
要讓您的令牌到期,請選擇到期下拉菜單,然后單擊默認值或使用日歷選擇器:
image.png -
選擇您要授予此令牌的范圍或權限。要使用您的令牌從命令行訪問存儲庫,請選擇repo:
image.png -
單擊生成令牌:
image.png
image.png
警告:將您的令牌視為密碼并保密。使用 API 時,將令牌用作環境變量,而不是將它們硬編碼到您的程序中。
在命令行上面使用令牌
獲得令牌后,您可以在通過 HTTPS 執行 Git 操作時輸入它而不是密碼。
例如,在命令行中輸入以下內容:
$ git clone https://github.com/username/repo.git
Username: your_username
Password: your_token
個人訪問令牌只能用于 HTTPS Git 操作。如果您的存儲庫使用 SSH 遠程 URL,則需要將遠程從 SSH 切換到 HTTPS。
如果系統未提示您輸入用戶名和密碼,則您的憑據可能已緩存在您的計算機上。您可以更新鑰匙串中的憑據以使用令牌替換舊密碼。
在 windows 中配置github 憑據
使用 https
的方式拉取或者推送代碼,每次都需要手動輸入用戶名和 personal access token
,為了方便,可以使用 windows 中的憑據管理器保存相關配置,如下圖所示:
image.png
如果 github 的憑據已經存在,原來保存的是用戶名和密碼,需要將原來的密碼修改為
personal access token
,通常情況下,我們登錄過 github 后就會在這里保存相關的憑據,如果沒有可用手動創建,如下圖所示:image.png