在我的公司 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
最佳答案
我遇到了这个问题并且无法修复,因为所有解决方案都缺少一个重要步骤,因此我将更详细地发布我的答案。
假设您已经生成了 ssh-key 并将其公钥添加到您的 github 帐户。另外,假设您使用的是 Windows-10。npm install
在 Windows 上会导致很多问题,因为有 ssh-agent
s 从 2 个不同的来源运行:
检测运行 ssh-agent 的来源
start-ssh-agent
(运行 git 提供的 ssh-agent)和 ssh-agent
(在 cmd 中运行 Windows 提供的 ssh-agent)。完成以上步骤后,您可以看到 2 个 ssh-agent.exe 正在运行。在“用户名”列中,您可以看到 的一个系统 (这是由 Windows 提供的)和一个用于 您的用户名 (这是 git)。
现在,请关闭您为 npm install 启动的所有 ssh-agents(直接从任务管理器)。
问题原因:
ssh-agent
npm install
正在尝试使用来自 git 但它与 Windows 提供的 ssh-agent 冲突。Git ssh-agent 可以使用
start-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 build 后您可以自由删除它(即使您想克隆更多 repos 并构建它们)。除非您想为不同的存储库添加更多 key 。
注:此路径与在 git 安装过程中添加的已经存在的 git/cmd 路径不同,因此请确保添加 之前 openSSH 路径变量以获得更高的优先级。
请按照以下步骤解决您的问题:
start-ssh-agent
启动您的 git ssh-agent在 cmd 中。不要使用 ssh-agent
当它启动 Windows 提供的 ssh-agent 时。 注: Env 需要关闭 cmd。变量生效。
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 key 添加到您的 ssh-agent .(选择私钥)。 (将 key 添加到 git ssh-agent,而不是 Windows ssh-agent)npm install
. 注:在此之后,每当您再次看到相同的错误时,只需运行
start-ssh-agent
然后 npm install
.我希望它有效,如果你不舒服,在成功 npm build 后,你甚至可以从 env 中删除新添加的路径。变量,因为它只需要一次(从 git 访问 ssh-add),和
start-ssh-agent
不能从该路径访问。编辑:删除路径不会有影响,但我建议不要删除路径,因为该路径还有许多其他有用的工具,例如 perl.exe、openssl.exe(不需要单独安装这些工具)。
关于node.js - NPM 安装错误本地存储库的权限被拒绝(公钥),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46305961/