【问题标题】:Is there a way to specify which ssh key should be used for npm install有没有办法指定哪个 ssh 密钥应该用于 npm install
【发布时间】:2014-11-14 06:34:21
【问题描述】:

我想在我的 package.json 文件中安装一个私人存储库。

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

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

【问题讨论】:

    标签: node.js git ssh npm


    【解决方案1】:

    这里有一些解决方案:

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

      托管 bitbucket.org 身份文件 ~/.ssh/bitbucket_key 身份只有是
    • 使用ssh-agent 并预先将您的密钥添加到代理实例。

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

    【讨论】:

    • 所以 3d 建议看起来很有希望,但 npm 似乎忽略了它。根据gist.github.com/jexchan/2351996,我会使用类似于您的第一个建议的内容
    • 注意使用 .ppk (Puttygen) 文件不适用于 ~/.ssh/config 文件中的 IdentityFile。它需要是一个 OpenSSH 文件
    • #1 为我工作。我不得不使用 puttygen 生成密钥,然后将其导出为 openssh 格式。
    • 我对这一切都很陌生。你能更详细地解释一下。就像~/.ssh/config 一样。以及如何使用ssh-agent
    【解决方案2】:

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

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

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

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

    还有其他添加受信任主机的方法,但这样做是为了验证您实际上可以访问所需的私有存储库。

    【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

    • 问题是关于在从 repo 安装时选择npm install 使用的密钥。私有注册表无关紧要。
    猜你喜欢
    • 2011-04-22
    • 1970-01-01
    • 2018-12-27
    • 2022-09-27
    • 1970-01-01
    • 2013-07-21
    • 1970-01-01
    • 1970-01-01
    • 2021-04-10
    相关资源
    最近更新 更多