Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 本地回购的NPM安装错误权限被拒绝(公钥)_Node.js_Npm Install - Fatal编程技术网

Node.js 本地回购的NPM安装错误权限被拒绝(公钥)

Node.js 本地回购的NPM安装错误权限被拒绝(公钥),node.js,npm-install,Node.js,Npm Install,我的公司github中的本地回购获取权限被拒绝错误,我可以成功克隆该公司,但NPM安装获取错误: npm ERR! Error while executing: npm ERR! C:\Program Files\Git\bin\git.EXE ls-remote -h -t git@<repo path and name> npm ERR! npm ERR! Permission denied (publickey). npm ERR! fatal: Could not read

我的公司github中的本地回购获取权限被拒绝错误,我可以成功克隆该公司,但NPM安装获取错误:

npm ERR! Error while executing:
npm ERR! C:\Program Files\Git\bin\git.EXE ls-remote -h -t git@<repo path and name>
npm ERR!
npm ERR! Permission denied (publickey).
npm ERR! fatal: Could not read from remote repository.
npm ERR!
npm ERR! Please make sure you have the correct access rights
npm ERR! and the repository exists.
npm ERR!
npm ERR! exited with error code: 128
npm错误!执行时出错:
npm错误!C:\ProgramFiles\Git\bin\Git.EXE ls remote-h-t Git@
npm错误!
npm错误!权限被拒绝(公钥)。
npm错误!致命:无法从远程存储库读取。
npm错误!
npm错误!请确保您拥有正确的访问权限
npm错误!并且存储库存在。
npm错误!
npm错误!已退出,错误代码:128

您是说您的lib已发布到npm注册表,还是您正试图使用npm直接从github安装?听起来你好像在尝试执行
npm安装company org/repo name
。如果是这样,那么你很可能会试图让npm从私人回购中撤出。您可以克隆,因为您可能已经为git设置了一个SSH密钥,以便使用Github进行身份验证

然后在package.json中使用以下语法:

"package-name": "git+ssh://git@github.com:<company-org>/<repo>.git"
“包名”:“git+ssh://git@github.com:/.git“

(注意在公司组织之前使用冒号而不是斜杠)

我遇到了这个问题,无法解决,因为所有解决方案都缺少一个重要步骤,因此我将更详细地发布我的答案

假设您已经生成ssh密钥并将其公钥添加到github帐户。另外,假设您使用的是Windows-10

Windows上的
npm安装
会导致很多问题,因为有
ssh代理
s从两个不同的来源运行:

  • Windows提供的ssh代理(OpenSSH)。此功能是在一个Windows-10更新中添加的,是罪魁祸首。:)
  • Git ssh代理(此代理是您的场景所必需的)(假设安装了Git)
检测正在运行的ssh代理的源
  • 在cmd中运行
    start ssh-agent
    (运行git提供的ssh-agent)和
    ssh-agent
    (运行Windows提供的ssh-agent)

  • 转到任务管理器并单击详细信息选项卡

  • 查找ssh-agent.exe

完成上述步骤后,您可以看到2个ssh-agent.exe正在运行。在“用户名”列中,您可以看到一个用于系统(由Windows提供),另一个用于您的用户名(这是git)。 现在,请关闭为npm安装而启动的所有ssh代理(直接从task manager)

问题起因: npm安装尝试使用的ssh代理来自git,但它与windows提供的ssh代理冲突

Git ssh代理可以使用
start ssh agent
启动,但是当您尝试使用命令
ssh add-k~/.ssh/id\u rsa
将ssh密钥添加到ssh代理时,它试图从Windows路径访问ssh-add.exe,但没有从Git中选择ssh-add.exe

解决方案: 解决方案是将git的ssh路径添加到系统的环境变量中,并将其添加到“%SYSTEMROOT%\System32\OpenSSH”之前,以使其具有更高的优先级

这是必需的,这样您就可以访问git的ssh-add.exe,并且在成功构建npm后,您可以自由删除它(即使您想克隆更多repo并构建它们)。除非您想为不同的回购协议添加更多密钥

注意:此路径与git安装期间添加的现有git/cmd路径不同,因此请确保将其添加到openSSh path变量之前,以获得更高的优先级

请按照以下步骤解决您的问题:

  • 通过在cmd中运行
    Start ssh agent
    来启动git ssh代理。不要使用
    ssh-agent
    ,因为它会启动Windows提供的ssh-agent
  • 打开任务管理器并转到详细信息选项卡
  • 查找ssh-agent.exe
  • 右键单击ssh agent.exe(在git提供的文件上),然后单击打开文件位置
  • 复制路径并将其添加到系统的环境变量中。请确保将此路径移动到“%SYSTEMROOT%\System32\OpenSSH”上方(如果已经存在,请忽略)
  • 关闭cmd并从任务管理器中关闭正在运行的ssh-agent.exe。 注意:Env需要关闭cmd。要生效的变量
  • 在repo中打开cmd并运行
    where-ssh-agent
    where-ssh-add
    ,以测试首选的ssh路径。(希望您现在看到2个路径,OpenSSH不应该出现在Git/bin/usr路径之前:)
  • 现在,你完成了。运行
    启动ssh代理
    (运行git ssh代理)
  • 通过
    ssh Add-k~/.ssh/id\u rsa
    向ssh代理添加首选ssh密钥(选择私钥)。(将密钥添加到git ssh代理,而不是Windows ssh代理)
  • 成功添加后,运行
    npm安装
  • 注意:之后,每当再次看到相同的错误时,只需运行
    启动ssh代理
    ,然后运行
    npm安装

    我希望它能工作,如果您不舒服,在成功构建npm之后,您甚至可以从env中删除新添加的路径。变量,因为它只需要一次(从git访问ssh add),并且不能从该路径访问
    start ssh agent


    编辑:删除路径不会影响效果,但我建议不要删除路径,因为此路径还有许多其他有用的工具,如perl.exe、openssl.exe(不需要单独安装这些工具)。

    如果您试图在全局/本地安装任何依赖项,请确保在开始时使用@。 例如: sudo npm i-g@vue/cli--正确。
    sudonpmi-gvue/cli——抛出上述错误。

    我得到了ssh-T的以下错误edl@.com权限被拒绝(公钥)。@Nik您是否确保
    ssh代理
    正在运行?您还可以使用SSH系统。启用并启动“OpenSSH身份验证代理”服务。然后更新Git-config:Git-config--global-core.sshCommand“'C:\W