2017-06-15 89 views
0

我有一個npm項目,取決於幾個私人Github存儲庫。我在staging服務器上部署項目,並且我爲每個私有存儲庫設置了單獨的部署密鑰,因爲Github不允許爲每個私鑰使用相同的密鑰。我已經建立了的〜/ .ssh /配置是這樣的:如何設置多個Github部署密鑰(npm,yarn)?

Host 1.github.com 
     HostName github.com 
     User git 
     PreferredAuthentications publickey 
     IdentityFile ~/.ssh/key-1 
     StrictHostKeyChecking no 

Host 2.github.com 
     HostName github.com 
     User git 
     PreferredAuthentications publickey 
     IdentityFile ~/.ssh/key-2 
     StrictHostKeyChecking no 

Host 3.github.com 
     HostName github.com 
     User git 
     PreferredAuthentications publickey 
     IdentityFile ~/.ssh/key-3 
     StrictHostKeyChecking no 

在的package.json,我有以下的私人Github上庫的依賴關係:

"project1": "git+ssh://[email protected]/myorg/project1.git", 
"project2": "git+ssh://[email protected]/myorg/project2.git", 
"project3": "git+ssh://[email protected]/myorg/project3.git" 

然而,這並不工作,我m得到Permission denied (publickey)錯誤。這些項目也被那些使用Github帳戶訪問存儲庫的用戶使用。

如何讓鑰匙工作?

回答

0

如果您要使用不同的github賬戶不同的密鑰,您需要使用在配置文件中定義的別名,如修改git的網址:

"project1": "git+ssh://[email protected]/myorg/project1.git", 
"project2": "git+ssh://[email protected]/myorg/project2.git", 
"project3": "git+ssh://[email protected]/myorg/project3.git" 
+0

這是不可能的,因爲這些密鑰沒有被使用該項目的每個人使用。將這種特定於環境的路徑提交到package.json是不切實際的。 – Kitanotori

+0

在這種情況下,您將不得不自行修改,否則您將不得不調整項目結構。請注意,除非您將更改存儲網址,否則git將不知道要使用哪個密鑰。其他的可能性是使用GIT_SSH_COMMAND env。變量與單獨的prijects的設置。 – Jakuje

+0

你如何爲每個項目設置GIT_SSH_COMMAND?另外,是否有可能會按順序嘗試的密鑰列表? – Kitanotori