Git 設置 SSH Key 在一台裝置上管理不同帳號的專案
2021, Aug 23
開始工作之後同時會有個人的 git repo 以及公司工作用的 git repo,一般來說會用一台專門處理工作的電腦來區分,但有時候會需要在個人裝置或是公司裝置上用到對方的專案,就像上班忙裡偷閒寫的這篇部落格一樣,如果要在不同專案間切換帳號也不是很方便,因此調整一下設定可以在一開始就指定好選用的帳號
產生 SSH key
這個步驟呢可以參考下github 的官方教學
不過因為我們要用到兩把 key,務必記得分開命名不然會被取代掉
Config
然後對 SSH key 作一點設定,新建一個設定檔 ~/.ssh/config
,預設沒有這個檔案,內容寫下:
# 預設 key
Host github.com
HostName github.com
PreferredAuthentications publickey
User git
IdentityFile ~/.ssh/id_rsa
# 工作用 key
Host work.github.com
HostName github.com
PreferredAuthentications publickey
User git
IdentityFile ~/.ssh/work_rsa
每個區塊第一行的 Host
是一種給 ssh 的識別,識別到這個 hostname 就會自動替換成下面設定的 HostName
,並且按照下面 IdentityFile
設定的 key 去連線
Remote Url
用這種方法需要在專案 clone 的時候或是事後設定專案的 url,就替換成需要的 host:
git clone git@work.github.com:compony/demo.git
git clone git@github.com:bingdoal/demo.git
以上就可以用不同的 key 去抓不同帳號的專案,在專案下的操作也會直接使用該 key 去操作
設定使用者
用以上的方法的確就可以操作不同的專案,但是每個專案都會使用 git 全域設定的 username 跟 email,有時候還是想區隔開來因此可以只設定該專案的 username 跟 email:
git clone --config user.name=forWork --config user.email=forWork git@work.github.com:compony/demo.git
也可以寫成 alias:
git config --global alias.clone-work clone --config user.name=forWork --config user.email=forWork
git clone-work git@work.github.com:compony/demo.git
這樣比較方便之後使用,也不會忘記名稱跟 email