使用賬號密碼來操作github? NO!


簡介

最近在更新github文件的時候,突然說不讓更新了,讓我很是困惑,原因是在2021年8月13號之后,github已經不讓直接使用賬號名密碼來登錄了,必須使用personal access token。今天給大家講解一下怎么對這個token進行緩存。

背景介紹

github為了安全性考慮,在2020年7月就准備對所有需要使用身份認證的git命令切換成基於令牌的身份驗證。並且從2021年8月13日開始,在 GitHub.com上對Git操作進行身份驗證時將不再接受帳戶密碼。

這個改動只對使用用戶名密碼進行github交互的用戶受影響。如果你使用的是SSH,或者之前就使用的是令牌,或者使用的是GitHub Desktop,那么不會有任何影響。

github做出這個決定主要是對於安全的考慮,明文的密碼很容易被泄露,如果換成有時限的token,即使泄露了影響也會非常有限。

並且可以為同一個github賬號根據不同的使用途徑,生成不同的token,並且隨時都可以控制token的有效狀態和不同token代表的權限。最大限度的保證賬號的安全性。

生成的token可隨時撤銷,並且令牌的隨機性更高,不容易被暴力破解。

創建令牌

令牌,英文名叫做token,個人訪問令牌英文簡寫為PAT。它是一種使用密碼對 GitHub 進行身份驗證的替代方法。

你可以將token看做是密碼,不過這個token具有權限和有效時間的限制。同時為了安全起見,GitHub 會自動刪除一年內未使用的個人訪問令牌。 為了保證令牌的安全性,我們強烈建議為個人訪問令牌添加過期時間。

要使用令牌首先需要創建令牌。怎么創建令牌呢?

首先登錄github.com,在我的賬號下方,選擇settings:

然后在左側邊欄中,點擊開發人員設置:

然后選擇左邊的個人訪問令牌:

點擊生成令牌按鈕,就可以生成令牌了。

在創建過程中,我們需要輸入和選擇一些數據:

比如我們需要給這個token起個名字,用來區分不同的使用場景,還要選擇一個過期時間,為了安全起見,這個過期時間不要太長。

最后,就是token對應的權限了,如果你只是對repository進行操作,選擇repo即可。

這樣一個令牌就創建好了。

注意,創建好的令牌需要及時保存,因為后續也不能再從網頁上查看該令牌的內容。令牌的保存需要和密碼的保存一樣注意安全。

使用令牌

上面我們提到了,令牌就相當於密碼,比如我們在拷貝一個需要密碼的repository使用輸入你的用戶名和token就可以正常操作了。

$ git clone https://github.com/username/repo.git
Username: your_username
Password: your_token

但是如果每次都需要輸入密碼就太麻煩了。下面講解一下怎么在git中緩存令牌。事實上令牌跟密碼是等價的,在git中緩存密碼的方式同樣適用於緩存令牌。

緩存令牌

通過設置credential.helper的緩存方式,可以對密碼進行緩存。

通常來說有兩種方式,一種是cache,一種是store。

cache是將密碼放在內存中一段時間,密碼不會存放在磁盤中,過一段時間會自動從內存中清除。

通過使用下面的命令,可以開啟cache:

git config --global credential.helper cache

對於store來說,它接收一個文件的路徑,用來存儲密碼文件。默認存放的路徑是~/.git-credentials,可以通過指定--file來修改:

git config --global credential.helper 'store --file /data/git/.git-credentials'

如果你使用的mac系統,mac提供了一個osxkeychain的東西,可以將密碼存儲到你的系統用戶的鑰匙串中。這種方式更加優雅,首先密碼是加密保存的,另外其管理起來也非常方便,還有可視化的界面。

當然你也可以從命令行將github的存儲密碼進行刪除:

$ git credential-osxkeychain erase
host=github.com
protocol=https
> [Press Return]

如果你在windows機子上,那么可以安裝一個叫做““Git Credential Manager for Windows”的工具,它是一個和osxkeychain類似的東西。

使用GCM

上面介紹的存儲方法都已經過時了,現在github推薦使用Git Credential Manager Core (GCM Core) 來對你的客戶端憑證進行管理。

通過使用GCM Core,根本不需要創建和儲存PAT,全部都有GCM Core來代表你進行管理。

怎么安裝GCM呢?下面是在mac上安裝的過程:

首先安裝git:

brew install git

然后安裝GCM Core:

$ brew tap microsoft/git
$ brew install --cask git-credential-manager-core

在下次你clone需要使用身份驗證的HTTPS URL時,Git將會提示你使用瀏覽器窗口登錄,通過授權OAuth應用程序,實現GCM Core對憑證的管理功能。

成功通過身份驗證后,你的憑據將存儲在macOS鑰匙串中,並且每次克隆HTTPS URL時都會使用鑰匙串中的憑證。 Git不會要求你再次在命令行中鍵入憑據,除非你更改憑據。

GCM Core同樣可以在windows和linux環境下使用。

總結

通過生成新的token,並更換現有的緩存密碼,最終我的github又可以重新提交了,贊!

本文已收錄於 http://www.flydean.com/05-git-personal-access-token/

最通俗的解讀,最深刻的干貨,最簡潔的教程,眾多你不知道的小技巧等你來發現!

歡迎關注我的公眾號:「程序那些事」,懂技術,更懂你!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM