NodeJS NPM安装错误本地存储库的Permission denied(publickey)

dm7nw8vv  于 2023-06-22  发布在  Node.js
关注(0)|答案(6)|浏览(271)

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

blmhpbnm1#

我遇到了这个问题,无法解决,因为所有的解决方案都缺少一个重要的步骤,所以我将更详细地发布我的答案。
假设你已经生成了ssh-key并将其公钥添加到你的github账户中。假设您使用的是Windows-10。
Windows上的npm install会导致很多问题,因为ssh-agent从两个不同的源运行:

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

检测运行ssh-agent的来源

  • 在cmd中运行start-ssh-agent(运行git提供的ssh-agent)和ssh-agent(运行Windows提供的ssh-agent)。
  • 转到任务管理器并单击详细信息选项卡。
  • 查找ssh-agent.exe。

按照以上步骤,您可以看到2 ssh-agent.exe正在运行。在“User name”栏中,你可以看到一个对应于SYSTEM(这是Windows提供的)和一个对应于your-user-name(这是git)。现在,请关闭您为npm安装启动的所有ssh-agent(直接从任务管理器)。

问题原因:

npm install尝试使用的ssh-agent来自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路径添加到系统的Environment变量中,并将其添加到“%SYSTEMROOT%\System32\OpenSSH”之前,这样它就具有更高的优先级。
这只是为了让你可以访问git的ssh-add.exe,并且在成功构建npm之后,你可以自由地删除它(即使你想克隆更多的repos并构建它们)。除非你想为不同的repos添加更多的键。

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

请按照以下步骤解决您的问题:
1.通过在cmd中运行start-ssh-agent来启动git ssh-agent。不要使用ssh-agent,因为它会启动Windows提供的ssh-agent。
1.打开任务管理器,进入【详细信息】选项卡。
1.查找ssh-agent.exe。
1.右键单击ssh-agent.exe(在git提供的那个上),然后单击打开文件位置
1.复制路径并将其添加到系统的环境变量中。请确保将此路径移动到“%SYSTEMROOT%\System32\OpenSSH”上方。(* 如果已存在则忽略 *)。
1.关闭cmd并关闭任务管理器中正在运行的ssh-agent.exe。**注:**环境需要关闭cmd。变量生效。
1.在repo中打开cmd并运行where ssh-agentwhere ssh-add来测试哪个ssh路径是首选的。(希望你现在看到2个路径,OpenSSH不应该出现在Git/bin/usr路径之前:))
1.现在你完了运行start-ssh-agent.(运行git ssh-agent)
1.通过ssh-add -k ~/.ssh/id_rsa将您首选的ssh密钥添加到ssh-agent。(选择私钥)。(将密钥添加到git ssh-agent,而不是Windows ssh-agent)
1.添加成功后,运行npm install

**注意:**之后,如果再次出现同样的错误,只需运行start-ssh-agent,然后再运行npm install即可。

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

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

bxfogqkk

bxfogqkk2#

你是说你的库是发布到npm注册表的,还是你想直接从github使用npm安装?这听起来像是你在做npm install company-org/repo-name。如果是这样的话,那么你更有可能试图让npm从私有repo中提取。你可以克隆,因为你可能已经为git设置了一个SSH密钥,用于在Github上进行身份验证。
Double check that SSH is setup,然后在package.json中使用以下语法:

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

(note在company-org之前使用冒号而不是斜杠)

kyks70gy

kyks70gy3#

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

to94eoyn

to94eoyn4#

我也遇到过类似的问题。以下是解决此问题的步骤程序:

**第一步:**检查SSH Key是否存在,运行以下命令,

$ cd ~/.ssh

$ ls

如果没有看到id_rsa.pub,请使用以下命令生成新密钥对。

**第二步:**生成新的SSH密钥,运行以下命令,(继续按enter设置所有默认值)

$ ssh-keygen -o -t rsa -C "abc@email.com"

**步骤3:**将公钥添加到GitHub

$ cat ~/.ssh/id_rsa.pub

复制终端上显示的输出。

**第四步:**登录github.com,按照以下步骤操作:

  • 进入“设置”->“SSH和GPG密钥”
  • 点击按钮“Add SSH Key”
  • 添加标题并将密钥粘贴到密钥部分。
    **第五步:**配置单点登录(完成流程和修复问题的重要步骤)
  • 单击SSH密钥中的“配置SSO”按钮(最近添加)
  • 点击“验证”按钮,输入凭证验证您的帐户。
    **第6步:**现在,如果您遇到类似“sign_and_send_pubkey:签名失败”,则需要将SSH密钥添加到代理。在客户端机器(您的本地)上运行下面的命令,
ssh-add
mfpqipee

mfpqipee5#

不管它有什么价值,如果它能在未来帮助任何人,我只是面临着同样的问题,因为我使用工作区和错误的安装命令。
而不是npm i ... --workspace=my_path/to_workspace我键入npm i ... --workspaces=my_path/to_workspace
“workspaces”而不是预期的单数“workspace”。

ogq8wdun

ogq8wdun6#

如果您使用的是Windows,请尝试使用Git Bash而不是CMD来运行npm安装

相关问题