2017-06-15 82 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

相关问题