获取权限被拒绝我公司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
答案 0 :(得分:4)
您是说您的lib已发布到npm注册表,或者您是否尝试使用npm直接从github安装?听起来你正试图做npm install company-org/repo-name
。如果是这样那么你很可能试图让npm从私人仓库中撤出。您可以克隆,因为您可能已经为git设置了一个SSH密钥,用于通过Github进行身份验证。
Double check that SSH is setup然后在package.json中使用此语法:
"package-name": "git+ssh://git@github.com:<company-org>/<repo>.git"
(注意在公司组织之前使用冒号而不是斜线)
答案 1 :(得分:3)
我遇到了这个问题,由于所有解决方案都缺少一个重要步骤,因此无法解决,因此我将更详细地发布我的答案。
假设您已经生成了ssh-key并将其公共密钥添加到您的github帐户中。另外,假设您使用的是Windows-10。
Windows上的 npm install
引起了很多问题,因为有ssh-agent
来自两个不同的来源:
在cmd中运行start-ssh-agent
(运行git提供的ssh-agent)和ssh-agent
(运行Windows提供的ssh-agent)。
转到任务管理器,然后单击“详细信息”选项卡。
查找ssh-agent.exe。
按照上述步骤操作后,您可以看到2 ssh-agent.exe正在运行。在“用户名”列中,您可以看到一个用于 SYSTEM (由Windows提供)和一个用于您的用户名(这是git)。 现在,请关闭您为npm install启动的所有ssh-agent(直接从任务管理器启动)。
npm install
尝试使用的ssh-agent来自git,但与提供的ssh-agent的窗口冲突。
可以使用start-ssh-agent
启动Git ssh-agent,但是当您尝试使用命令ssh-add -k ~/.ssh/id_rsa
将ssh-key添加到ssh-agent时,它试图从Windows访问ssh-add.exe。路径,但不从git中选择ssh-add.exe。
解决方案是将git的ssh路径添加到系统的环境变量中,并将其添加到“%SYSTEMROOT%\ System32 \ OpenSSH”之前,以便具有更高的优先级。
这仅是必需的,以便您可以访问git的ssh-add.exe,并且在成功构建npm后,您可以自由删除它(即使您要克隆更多存储库并进行构建)。除非您要为不同的存储库添加更多密钥。
注意:此路径与git安装过程中添加的已经存在的git / cmd路径不同,因此请确保在之前 openSSh路径变量中添加它以获得更高的优先级。
请按照以下步骤解决您的问题:
start-ssh-agent
来启动git ssh-agent。在启动Windows提供的ssh-agent时,请不要使用ssh-agent
。where ssh-agent
和where ssh-add
来测试哪个ssh路径是首选。 (希望您现在看到2条路径,并且OpenSSH不应出现在Git / bin / usr路径之前:))start-ssh-agent
。(运行git ssh-agent)ssh-add -k ~/.ssh/id_rsa
向您的ssh-agent添加您首选的ssh密钥。(选择私钥)。 (将密钥添加到git ssh-agent,而不是Windows ssh-agent)npm install
。 注意:之后,只要再次遇到相同的错误,只需运行start-ssh-agent
,然后运行npm install
。
我希望它能起作用,如果您不满意,则在成功构建npm后,您甚至可以从env中删除新添加的路径。变量,因为它只需要一次(从git访问ssh-add),而从该路径不能访问start-ssh-agent
。
编辑:删除路径不会影响,但我建议不要删除该路径,因为该路径还具有许多其他有用的工具,例如perl.exe,openssl.exe(不要不需要单独安装这些工具。
答案 2 :(得分:0)
如果您尝试在全局/本地安装任何依赖项,请确保在开始时使用 @。 例如: sudo npm i -g @vue/cli --正确。 sudo npm i -g vue/cli -- 抛出上述错误。