Node.js 本地回购的NPM安装错误权限被拒绝(公钥)
我的公司github中的本地回购获取权限被拒绝错误,我可以成功克隆该公司,但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
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)
- 在cmd中运行
(运行git提供的ssh-agent)和start ssh-agent
(运行Windows提供的ssh-agent)ssh-agent
- 转到任务管理器并单击详细信息选项卡
- 查找ssh-agent.exe
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变量之前,以获得更高的优先级
请按照以下步骤解决您的问题:
Start ssh agent
来启动git ssh代理。不要使用ssh-agent
,因为它会启动Windows提供的ssh-agentwhere-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