在我公司的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
6条答案
按热度按时间blmhpbnm1#
我遇到了这个问题,无法解决,因为所有的解决方案都缺少一个重要的步骤,所以我将更详细地发布我的答案。
假设你已经生成了ssh-key并将其公钥添加到你的github账户中。假设您使用的是Windows-10。
Windows上的
npm install
会导致很多问题,因为ssh-agent
从两个不同的源运行:检测运行ssh-agent的来源
start-ssh-agent
(运行git提供的ssh-agent)和ssh-agent
(运行Windows提供的ssh-agent)。按照以上步骤,您可以看到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-agent
和where 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(不需要单独安装这些工具)。
bxfogqkk2#
你是说你的库是发布到npm注册表的,还是你想直接从github使用npm安装?这听起来像是你在做
npm install company-org/repo-name
。如果是这样的话,那么你更有可能试图让npm从私有repo中提取。你可以克隆,因为你可能已经为git设置了一个SSH密钥,用于在Github上进行身份验证。Double check that SSH is setup,然后在package.json中使用以下语法:
(note在company-org之前使用冒号而不是斜杠)
kyks70gy3#
如果你试图在全局/本地安装任何依赖项,请确保在开始时使用**@。例如:sudo npm i -g*@vue/cli***--correct. sudo npm i -g vue/cli --抛出上述错误。
to94eoyn4#
我也遇到过类似的问题。以下是解决此问题的步骤程序:
**第一步:**检查SSH Key是否存在,运行以下命令,
如果没有看到id_rsa.pub,请使用以下命令生成新密钥对。
**第二步:**生成新的SSH密钥,运行以下命令,(继续按enter设置所有默认值)
**步骤3:**将公钥添加到GitHub
复制终端上显示的输出。
**第四步:**登录github.com,按照以下步骤操作:
**第五步:**配置单点登录(完成流程和修复问题的重要步骤)
**第6步:**现在,如果您遇到类似“sign_and_send_pubkey:签名失败”,则需要将SSH密钥添加到代理。在客户端机器(您的本地)上运行下面的命令,
mfpqipee5#
不管它有什么价值,如果它能在未来帮助任何人,我只是面临着同样的问题,因为我使用工作区和错误的安装命令。
而不是
npm i ... --workspace=my_path/to_workspace
我键入npm i ... --workspaces=my_path/to_workspace
。“workspaces”而不是预期的单数“workspace”。
ogq8wdun6#
如果您使用的是Windows,请尝试使用Git Bash而不是CMD来运行npm安装