当前位置: 首页 > 知识库问答 >
问题:

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

王凌
2023-03-14

我的公司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

共有3个答案

宗政霄
2023-03-14

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

魏成济
2023-03-14

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

仔细检查SSH设置,然后在package.json中使用此语法:

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

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

颛孙兴旺
2023-03-14

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

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

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

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

>

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

找ssh-agent.exe.

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

npm安装尝试使用的ssh代理来自git,但它与windows提供的ssh代理冲突。

可以使用start ssh-agent启动Git ssh-agent,但是当您尝试使用命令ssh-add-k~将ssh密钥添加到ssh-agent时。ssh/id\u rsa,它正在尝试访问ssh add。从Windows路径执行,但不选择ssh添加。来自git的exe。

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

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

注意:此路径不同于git安装期间添加的现有git/cmd路径,因此请确保它是在openSSh路径变量之前添加的,以获得更高的优先级。

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

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

注意:在此之后,每当再次看到相同的错误时,只需运行start ssh-agent,然后运行npm-install

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

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

 类似资料:
  • 我试图在MacOS10.12上安装sudoNPM-gappium。5. 我得到这个错误: 信息Chromedriver安装为平台“mac”和架构“64”安装Chromedriver版本“2.30” 信息Chromedriver安装打开临时文件以将Chromedriver\u mac64写入。。。 错误:EACCES:权限拒绝,mkdir “/usr/local/lib/node_modules/a

  • 我试图运行一个本地Jenkins管道使用Jenkinsfile的nodejs应用程序使用节点:6-alpin图像(默认)使用build.sh脚本使用调用npm安装然后我得到了以下权限错误 npm ERR!错误:EACCES:权限被拒绝,mkdir'/. npm'npm ERR!在错误(本机)npm ERR!{错误:EACCES:权限被拒绝,mkdir'/. npm'npm ERR!在错误(本机)n

  • 问题内容: 尝试安装npm模块时,出现奇怪的权限错误。我从头开始,因此我确定我确实可以访问,但是由于某些原因,它一直在抱怨错误: 堆栈错误:EACCES:权限被拒绝,mkdir’/ usr / lib / node_modules / joplin / node_modules / sqlite3 / build’ 我尝试重新启动计算机,并使用chmod 777 创建目录,但仍然无法正常工作。 编

  • 命令:npm安装-gnpm@latest 结果: npm错误!代码EACCES npm ERR!系统调用重命名npm错误!路径/usr/local/lib/node_modules/。暂存/npm-3e479054/node_模块/字符串宽度npm错误!dest/usr/local/lib/node_modules/。暂存/字符串宽度-fa87d55b npm错误!错误-13 npm错误!错误:E

  • 我已设法破坏了我的安装,每当我尝试使用安装包时,我都会收到以下错误消息: 未处理的拒绝错误:eAcces:权限被拒绝,打开“/users/marknorgate/.npm/_cacache/TMP/A449402d”