如何设置多个Github部署密钥(npm、yarn)?

如何设置多个Github部署密钥(npm、yarn)?,git,github,ssh,npm,yarnpkg,Git,Github,Ssh,Npm,Yarnpkg,我有一个npm项目,它依赖于几个私有Github存储库。我正在staging服务器上部署该项目,并且为每个私有存储库设置了单独的部署密钥,因为Github不允许对每个私有存储库使用相同的密钥。我已经像这样设置了~/.ssh/config: Host 1.github.com HostName github.com User git PreferredAuthentications publickey IdentityFile ~/.

我有一个npm项目,它依赖于几个私有Github存储库。我正在staging服务器上部署该项目,并且为每个私有存储库设置了单独的部署密钥,因为Github不允许对每个私有存储库使用相同的密钥。我已经像这样设置了~/.ssh/config:

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://git@github.com/myorg/project1.git",
"project2": "git+ssh://git@github.com/myorg/project2.git",
"project3": "git+ssh://git@github.com/myorg/project3.git"
但是,这不起作用,我得到了
权限被拒绝(公钥)
错误。使用Github帐户访问存储库的用户也在使用这些项目


如何使密钥工作?

如果要为不同的github帐户使用不同的密钥,需要使用配置文件中定义的别名修改git URL,例如:

"project1": "git+ssh://git@1.github.com/myorg/project1.git",
"project2": "git+ssh://git@2.github.com/myorg/project2.git",
"project3": "git+ssh://git@3.github.com/myorg/project3.git"

这是不可能的,因为使用项目的每个人都不使用这些键。将这种特定于环境的路径提交到package.json是不切实际的。在这种情况下,您必须自己修改它,或者必须调整项目结构。请注意,除非您更改repositpry url,否则git将不知道使用哪个键。另一种可能是使用GIT_SSH_命令env。变量,带有单独项目的设置。如何为每个项目设置GIT_SSH_命令?另外,是否不可能有一个按顺序尝试的键列表?不知道如何在npm中做到这一点。您可以拥有该列表,但如果github能够识别它们,则第一个列表将始终成功。