簡體   English   中英

帶git子模塊的多個ssh密鑰

[英]Multiple ssh keys with git submodules

我正在使用GITHUB的企業版。 我正在創建一個自動構建服務器來構建我們的項目。 這些項目有子模塊。

由於這個構建服務器不是“我”(它不能擁有我的用戶憑據),它需要能夠通過github“部署密鑰”功能從GIT下載項目。 (每個項目只讀ssh鍵)

限制是:1。github希望我以ssh://git@mygithubserver.com登錄2. github強制執行一個策略,其中沒有兩個項目可以共享部署密鑰(不同於為整個github服務器注冊的常規用戶密鑰)。 [側面問題,這背后的原因是什么?!] 3.我的企業IT不允許共享任意帳戶:用戶始終與某個人關聯,它不能屬於服務器。

因此,我認為我唯一的選擇是使用部署密鑰功能,為不同的項目使用不同的密鑰。 (部署密鑰基本上是基於這種情況開發的......)

我發現可以設置多個密​​鑰的唯一方法是: https//gist.github.com/jexchan/2351996

現在關於子模塊:這個技巧只適用於頂級項目,因為這是我可以指定自定義主機名的唯一地方,如:“git clone git @ custom-git-host-name”命令。

當它進入init並更新子模塊時 ,它使用父repo中的任何主機名(這是原始的mygithubserver.com)。 當我們的開發人員使用他們的個人密鑰時,這完美無瑕。 但是,對於需要針對不同項目使用不同部署密鑰的構建服務器,這會失敗。

有沒有辦法解決這個問題,並讓git在同一台服務器上為不同的項目使用不同的ssh密鑰?

是否有一些愚蠢的方式讓2個項目共享部署密鑰? (我不允許修改github源代碼,因為這是一個非常龐大的IT托管企業githib服務器)

我通過在父項目中創建一個包含以下內容的小腳本文件來解決它:

git submodule init
ssh-agent sh -c "ssh-add -D; ssh-add some_private_key.pem; git submodule update some_dubmodule"
ssh-agent sh -c "ssh-add -D; ssh-add another_private_key.pem; git submodule update another_submodule"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM