Github Deploy Key && PATs


前言

自從轉換工作變成DevOps後,更常需要使用Git以及Github等工具,因此記錄下日常維運、開發常需使用Git && Github 技巧,方便日後翻找以及提供給有需要的人

Github

自從Github禁止使用username和password來進行git操作後,目前新的方式也就變成使用個人的Personal Access Tokens或者利用針對個別Repository使用Deploy Key兩種方式為主

Deploy Keys

Deploy Keys的設定必須是針對Repository進行,首先選擇Repository的Setting選項 (注意如果沒看到Setting選項代表你沒有該Repository的admin權限)

點選Add deploy key

打上希望的Title name以及貼上公鑰在Key並依照需求看是否要勾選Allow write access的選項

產生Key最快的方法是利用ssh-keygen來產生最快 (.pub的是公鑰)

ssh-keygen -t rsa -b 4096 -m PEM

最後必須記得Github禁止不同Repository使用同一組金鑰對,所以使用該方法如果有非常多的Repository需要管理,那就必須 1:1產生對等數量的金鑰對進行設定

使用上最快速的一個方法可以直接利用ssh-agent 加入對應的deploy key後就可以直接把Repository git clone到本地端,範例如下

但是離開這個terminals後,下次使用如果想要git pull等操作就必須重新加入ssh-agent內才能使用,這時候另一種方法是使用GIT_SSH_COMMAND

操作使令如下

GIT_SSH_COMMAND='ssh -i /home/poiblacktea/.ssh/demo1' git pull

如果想使用GIT_SSH_COMMAND來進行git clone則如下

git clone -c core.sshCommand="/usr/bin/ssh -i /home/me/.ssh/id_rsa_foo" git@github.com:me/repo.git

然而在自動化以及大量操作不同的Repository中以上方法都還是太慢了,因此我們可以利用 ~/.ssh/config 來幫我們進行管理

範例如下 (出自Github docs)

Host github.com-repo-0
        Hostname github.com
        IdentityFile=/home/user/.ssh/repo-0_deploy_key

Host github.com-repo-1
        Hostname github.com
        IdentityFile=/home/user/.ssh/repo-1_deploy_key

這時候我們的操作也就變成

git clone git@github.com-repo-1:OWNER/repo-1.git

這樣我們再進行大量不同的Repository操作上也就變得更加的容易簡單了

Personal Aceess Tokens

設定一組新的PATs首先要點選Github右上角個人選單的Setting

然後選擇左側選項中最底下的Developer settings

接著點選Personal access tokens就可以進行過去的PATs管理及新增 (對我們來講最重要的是否過期)

對於一般使用上我們只需要打上Note勾選repo後點選最下方的Generate token就可以進行日常的操作了

我們須記得產生的ghp開頭的這串隨機字串,這串字串產生時沒記得就必須重新建立一組PATs了,然後很重要這串不然隨便外洩,因為會導致拿到的人有設定上同等的存取權

日常操作中因為PATs設定上需要設定期限,因此過期後都會看到以下訊息,這時可以打上新建立的PATs就可以正常操作,但因為git紀錄上仍舊是舊的PATs所以每次都要輸入新的PATs

解決方法更改git remote 遠端數據庫

git remote -v 可以看到未更改前的遠端數據庫設定
先使用git remote remove origin,然後加上新的git remote remove add origin https://<PATS>@@github.com/<OWNER>/<REPO>.git

範例操作如下

操作完成後最後必須重新與遠端數據庫進行追蹤

git branch --set-upstream-to=origin/<branch> <local branch>

參考資料

#Github #Deploy Key #PATs






你可能感興趣的文章

Spring boot系列(一)前言

Spring boot系列(一)前言

MTR04_1110

MTR04_1110

C++筆記 以指標當作參數傳入函數

C++筆記 以指標當作參數傳入函數






留言討論