有没有办法指定哪个ssh密钥应该用于npm安装

时间:2014-09-19 15:45:43

标签: node.js git ssh npm

我有一个私人仓库,我想在我的package.json文件中安装。

"private-module": "git+ssh://git@bitbucket.org:private/private-module.git"

默认情况下,npm使用您的默认私钥。我希望能够在运行npm install时指定npm应该使用哪个ssh密钥。有没有办法做到这一点?

3 个答案:

答案 0 :(得分:27)

以下是一些解决方案:

  • ~/.ssh/config中添加条目。例如:

    Host bitbucket.org
         IdentityFile ~/.ssh/bitbucket_key
         IdentitiesOnly yes
    
  • 使用ssh-agent并事先将密钥添加到代理实例。

  • 使用类似ssh-ident的内容,根据当前工作目录或传递给ssh-ident的参数动态选择ssh代理和身份。正如他们的自述文件所述,您通常将ssh-ident别名为ssh,以便它自动在任何地方使用。

答案 1 :(得分:2)

在mscdex的answer的第一部分中进行了更改后,您可能需要将主机添加到已知主机列表中 - 在npm install命令起作用之前。

您可以通过将私人仓库克隆到另一个目录来完成此操作:

git clone ssh://git@bitbucket.org:private/private-module.git

可能会询问您是否要继续,输入yes并输入,然后输入bitbucket.org。返回项目目录并重试npm install。这就是mscdex为我工作的答案所需要的。

还有其他方法可以添加可信主机,但这样做除了验证您是否可以实际访问所需的私人仓库。

答案 2 :(得分:0)

否则,您可以在.npmrc文件中使用 NPM令牌

// .npmrc
//registry.npmjs.org/:_authToken=${YOUR_NPM_TOKEN}

来源:https://blog.npmjs.org/post/118393368555/deploying-with-npm-private-modules