使用賬號(hào)密碼來(lái)操作github? NO!

簡(jiǎn)介

最近在更新github文件的時(shí)候份名,突然說(shuō)不讓更新了舞蔽,讓我很是困惑芥驳,原因是在2021年8月13號(hào)之后,github已經(jīng)不讓直接使用賬號(hào)名密碼來(lái)登錄了谭期,必須使用personal access token堵第。今天給大家講解一下怎么對(duì)這個(gè)token進(jìn)行緩存。

背景介紹

github為了安全性考慮崇堵,在2020年7月就準(zhǔn)備對(duì)所有需要使用身份認(rèn)證的git命令切換成基于令牌的身份驗(yàn)證型诚。并且從2021年8月13日開(kāi)始,在 GitHub.com上對(duì)Git操作進(jìn)行身份驗(yàn)證時(shí)將不再接受帳戶密碼鸳劳。

這個(gè)改動(dòng)只對(duì)使用用戶名密碼進(jìn)行g(shù)ithub交互的用戶受影響狰贯。如果你使用的是SSH,或者之前就使用的是令牌,或者使用的是GitHub Desktop涵紊,那么不會(huì)有任何影響傍妒。

github做出這個(gè)決定主要是對(duì)于安全的考慮,明文的密碼很容易被泄露摸柄,如果換成有時(shí)限的token颤练,即使泄露了影響也會(huì)非常有限。

并且可以為同一個(gè)github賬號(hào)根據(jù)不同的使用途徑驱负,生成不同的token嗦玖,并且隨時(shí)都可以控制token的有效狀態(tài)和不同token代表的權(quán)限。最大限度的保證賬號(hào)的安全性跃脊。

生成的token可隨時(shí)撤銷宇挫,并且令牌的隨機(jī)性更高,不容易被暴力破解酪术。

創(chuàng)建令牌

令牌器瘪,英文名叫做token,個(gè)人訪問(wèn)令牌英文簡(jiǎn)寫(xiě)為PAT绘雁。它是一種使用密碼對(duì) GitHub 進(jìn)行身份驗(yàn)證的替代方法橡疼。

你可以將token看做是密碼,不過(guò)這個(gè)token具有權(quán)限和有效時(shí)間的限制庐舟。同時(shí)為了安全起見(jiàn)欣除,GitHub 會(huì)自動(dòng)刪除一年內(nèi)未使用的個(gè)人訪問(wèn)令牌。 為了保證令牌的安全性继阻,我們強(qiáng)烈建議為個(gè)人訪問(wèn)令牌添加過(guò)期時(shí)間耻涛。

要使用令牌首先需要?jiǎng)?chuàng)建令牌。怎么創(chuàng)建令牌呢瘟檩?

首先登錄github.com,在我的賬號(hào)下方抹缕,選擇settings:

image

然后在左側(cè)邊欄中,點(diǎn)擊開(kāi)發(fā)人員設(shè)置:

image

然后選擇左邊的個(gè)人訪問(wèn)令牌:

image

點(diǎn)擊生成令牌按鈕墨辛,就可以生成令牌了卓研。

image

在創(chuàng)建過(guò)程中,我們需要輸入和選擇一些數(shù)據(jù):

image

比如我們需要給這個(gè)token起個(gè)名字睹簇,用來(lái)區(qū)分不同的使用場(chǎng)景奏赘,還要選擇一個(gè)過(guò)期時(shí)間,為了安全起見(jiàn)太惠,這個(gè)過(guò)期時(shí)間不要太長(zhǎng)磨淌。

最后,就是token對(duì)應(yīng)的權(quán)限了凿渊,如果你只是對(duì)repository進(jìn)行操作梁只,選擇repo即可缚柳。

這樣一個(gè)令牌就創(chuàng)建好了。

注意搪锣,創(chuàng)建好的令牌需要及時(shí)保存秋忙,因?yàn)楹罄m(xù)也不能再?gòu)木W(wǎng)頁(yè)上查看該令牌的內(nèi)容。令牌的保存需要和密碼的保存一樣注意安全构舟。

使用令牌

上面我們提到了灰追,令牌就相當(dāng)于密碼,比如我們?cè)诳截愐粋€(gè)需要密碼的repository使用輸入你的用戶名和token就可以正常操作了狗超。

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

但是如果每次都需要輸入密碼就太麻煩了弹澎。下面講解一下怎么在git中緩存令牌。事實(shí)上令牌跟密碼是等價(jià)的抡谐,在git中緩存密碼的方式同樣適用于緩存令牌裁奇。

緩存令牌

通過(guò)設(shè)置credential.helper的緩存方式桐猬,可以對(duì)密碼進(jìn)行緩存麦撵。

通常來(lái)說(shuō)有兩種方式,一種是cache溃肪,一種是store免胃。

cache是將密碼放在內(nèi)存中一段時(shí)間,密碼不會(huì)存放在磁盤(pán)中惫撰,過(guò)一段時(shí)間會(huì)自動(dòng)從內(nèi)存中清除羔沙。

通過(guò)使用下面的命令,可以開(kāi)啟cache:

git config --global credential.helper cache

對(duì)于store來(lái)說(shuō)厨钻,它接收一個(gè)文件的路徑扼雏,用來(lái)存儲(chǔ)密碼文件。默認(rèn)存放的路徑是~/.git-credentials夯膀,可以通過(guò)指定--file來(lái)修改:

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

如果你使用的mac系統(tǒng)诗充,mac提供了一個(gè)osxkeychain的東西,可以將密碼存儲(chǔ)到你的系統(tǒng)用戶的鑰匙串中诱建。這種方式更加優(yōu)雅蝴蜓,首先密碼是加密保存的,另外其管理起來(lái)也非常方便俺猿,還有可視化的界面茎匠。

當(dāng)然你也可以從命令行將github的存儲(chǔ)密碼進(jìn)行刪除:

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

如果你在windows機(jī)子上,那么可以安裝一個(gè)叫做““Git Credential Manager for Windows”的工具押袍,它是一個(gè)和osxkeychain類似的東西诵冒。

使用GCM

上面介紹的存儲(chǔ)方法都已經(jīng)過(guò)時(shí)了,現(xiàn)在github推薦使用Git Credential Manager Core (GCM Core) 來(lái)對(duì)你的客戶端憑證進(jìn)行管理谊惭。

通過(guò)使用GCM Core汽馋,根本不需要?jiǎng)?chuàng)建和儲(chǔ)存PAT否过,全部都有GCM Core來(lái)代表你進(jìn)行管理。

怎么安裝GCM呢惭蟋?下面是在mac上安裝的過(guò)程:

首先安裝git:

brew install git

然后安裝GCM Core:

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

在下次你clone需要使用身份驗(yàn)證的HTTPS URL時(shí)苗桂,Git將會(huì)提示你使用瀏覽器窗口登錄,通過(guò)授權(quán)OAuth應(yīng)用程序告组,實(shí)現(xiàn)GCM Core對(duì)憑證的管理功能煤伟。

成功通過(guò)身份驗(yàn)證后,你的憑據(jù)將存儲(chǔ)在macOS鑰匙串中木缝,并且每次克隆HTTPS URL時(shí)都會(huì)使用鑰匙串中的憑證便锨。 Git不會(huì)要求你再次在命令行中鍵入憑據(jù),除非你更改憑據(jù)我碟。

GCM Core同樣可以在windows和linux環(huán)境下使用放案。

總結(jié)

通過(guò)生成新的token,并更換現(xiàn)有的緩存密碼矫俺,最終我的github又可以重新提交了吱殉,贊!

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

最通俗的解讀厘托,最深刻的干貨友雳,最簡(jiǎn)潔的教程,眾多你不知道的小技巧等你來(lái)發(fā)現(xiàn)铅匹!

歡迎關(guān)注我的公眾號(hào):「程序那些事」,懂技術(shù)押赊,更懂你!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末包斑,一起剝皮案震驚了整個(gè)濱河市流礁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌罗丰,老刑警劉巖神帅,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異丸卷,居然都是意外死亡枕稀,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)谜嫉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)萎坷,“玉大人,你說(shuō)我怎么就攤上這事沐兰《叩担” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵住闯,是天一觀的道長(zhǎng)瓜浸。 經(jīng)常有香客問(wèn)我澳淑,道長(zhǎng),這世上最難降的妖魔是什么插佛? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任杠巡,我火速辦了婚禮,結(jié)果婚禮上雇寇,老公的妹妹穿的比我還像新娘氢拥。我一直安慰自己,他們只是感情好锨侯,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布嫩海。 她就那樣靜靜地躺著,像睡著了一般囚痴。 火紅的嫁衣襯著肌膚如雪叁怪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,166評(píng)論 1 284
  • 那天深滚,我揣著相機(jī)與錄音奕谭,去河邊找鬼。 笑死成箫,一個(gè)胖子當(dāng)著我的面吹牛展箱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蹬昌,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼攀隔!你這毒婦竟也來(lái)了皂贩?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤昆汹,失蹤者是張志新(化名)和其女友劉穎明刷,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體满粗,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡辈末,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了映皆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挤聘。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖捅彻,靈堂內(nèi)的尸體忽然破棺而出组去,到底是詐尸還是另有隱情,我是刑警寧澤步淹,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布从隆,位于F島的核電站诚撵,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏键闺。R本人自食惡果不足惜寿烟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望辛燥。 院中可真熱鬧韧衣,春花似錦、人聲如沸购桑。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)勃蜘。三九已至硕噩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間缭贡,已是汗流浹背炉擅。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留阳惹,地道東北人谍失。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像莹汤,于是被迫代替她去往敵國(guó)和親快鱼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容