使用Personal Access Tokens來存取Azure DevOps的Repos
λ git pull
fatal: Authentication failed for 'https://dev.azure.com/x/y/z/'
公司某些伺服器,管理嚴緊,經過多次溝通後,才准許進行Git與Azure DevOps連線。但Git開通後馬上發現一個另一個問題,要有取Azure DevOps的服務都必須經過身份認證。是可以看到登入畫面,但礙於網路限制,你無法完成身份認證的過程。因此,不論是git pull
、git push
都卡住了。
建立Personal Access Tokens
其實在Azure Devops有另一種代替身份的東西,叫Personal Access Tokens(簡稱PAT),很明顯,這個Access Tokens是拿來代替你的。首先我們來看如何建立Personal Access Tokens。
這個PAT可以指定擁有的權限,就我們要拿來Git與Repos使用,在Code的部分需要有Read & Write,如果有在Azure DevOps裡自行發行NuGet套用,那麼也需要Packaging的Read權限。第二件重要的事,一般我們在Azure Devops裡進行Repos Clone的時候,也有產生PAT的功能,但那組PAT的時效過短,因此這裡我們才會用自訂PAT來設定。我個人而言,我是直接拉最長一年的時效。
這個PAT只會出現一次,記得複製保留好。
下面 Git:
開頭就是在Clone時產生的PAT,預設最小權限與時效,如果符合你需求,也是一個選項。
Git使用Personal Access Tokens存取Azure DevOps Repos
當我們Clone完專案後,如果我們想把PAT套用到專案的Git組態中,那麼,我們先進入Repos裡的.git
目錄,開啟config
組態檔
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
[remote "origin"]
url = https://dev.azure.com/x/y/z
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "QAS"]
remote = origin
merge = refs/heads/QAS
[branch "develop"]
remote = origin
merge = refs/heads/develop
找到url = https://dev.azure.com/x/y/z
,將PAT直接套用到url裡面:
- 原始url:https://dev.azure.com/x/y/z
- PAT url:https://202308BrucePAT:v734slpxi66l2jvzbbcwnn5...@dev.azure.com/x/y/z
格式:【https://PATName:PATTaken@
dev.azure.com】,這樣就能把PAT提供Git。存檔後,將你的命令列工具關閉重開一下,再使用git pull
、git push
時,Git就會拿PAT去跟Azure DevOps進行身份確認,無誤之後就能直接進行Git相關作業,而不會再出現身份認證的跳出視窗。
唯一麻煩的事是,最後你在一年後某一天會突然無法正常存取Azure DevOps的Repos,要記得要你是透過PAT存取,然後再重設一遍即可。
沒有留言:
張貼留言
感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。