使用Personal Access Tokens來存取Azure DevOps的Repos

使用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 pullgit push都卡住了。

建立Personal Access Tokens

其實在Azure Devops有另一種代替身份的東西,叫Personal Access Tokens(簡稱PAT),很明顯,這個Access Tokens是拿來代替你的。首先我們來看如何建立Personal Access Tokens。

Personal Access Tokens
Personal Access Tokens - New Token
Personal Access Tokens - Scopes

這個PAT可以指定擁有的權限,就我們要拿來Git與Repos使用,在Code的部分需要有Read & Write,如果有在Azure DevOps裡自行發行NuGet套用,那麼也需要Packaging的Read權限。第二件重要的事,一般我們在Azure Devops裡進行Repos Clone的時候,也有產生PAT的功能,但那組PAT的時效過短,因此這裡我們才會用自訂PAT來設定。我個人而言,我是直接拉最長一年的時效。

Personal Access Tokens - Get Token

這個PAT只會出現一次,記得複製保留好。

Personal Access Tokens - Token List

下面 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 pullgit push時,Git就會拿PAT去跟Azure DevOps進行身份確認,無誤之後就能直接進行Git相關作業,而不會再出現身份認證的跳出視窗。

唯一麻煩的事是,最後你在一年後某一天會突然無法正常存取Azure DevOps的Repos,要記得要你是透過PAT存取,然後再重設一遍即可。

沒有留言:

張貼留言

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。