有没有一种方法可以指定哪个ssh密钥应该用于npm安装



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

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

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

以下是一些解决方案:

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

    主机bitbucket.orgIdentityFile~/.ssh/bitbacket_key身份只有是
  • 使用ssh-agent并事先将密钥添加到代理实例中。

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

在mscdex答案的第一部分中进行更改后,您可能需要将主机添加到已知主机列表中,然后npm install命令才能工作。

您可以通过将私有repo克隆到另一个目录来做到这一点:

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

您可能会被问到是否要继续,键入yes并输入,则bitbucket.org是可信的。返回到您的项目目录,然后重试npm install。这就是mscdex的答案对我有用所需要的。

还有其他方法可以添加受信任的主机,但这除了验证您是否真的可以访问所需的私有回购之外。

你显然可以用做到这一点

export GIT_SSH_COMMAND='ssh -i ~/.ssh/your_private_key'

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

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

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

最新更新