npm install 报错 Permission denied (publickey) ssh://

文章讲述了在执行npminstall过程中遇到的GitSSH权限问题,包括Permissiondenied错误,以及如何通过替换URL为HTTP,设置git和npm的代理,清理npm缓存,以及使用nvm管理Node版本来解决这些问题。同时提到了npmrundev时可能遇到的ERR_OSSL_EVP_UNSUPPORTED错误及其解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题一:

主要是在执行 npm install 过程中遇到:

       /usr/bin/git ls-remote ssh://git@github.com/nhn/raphael.git

        Permission denied (publickey)

由于通过 ssh:// 访问异常,但是通过:

        /usr/bin/git ls-remote http://git@github.com/nhn/raphael.git 执行没问题

也就是说通过 git config 将 ssh:// 替换成 http:// 就能解决:

执行指令:

        sudo git config --global url."http://".insteadOf ssh://

问题二:

Error: EACCES: permission denied, access '/data/vue-element-admin'

这个是依赖超级权限问题,需要通过:

        sudo npm install 解决

在执行 sudo npm install 之前,需要检查 sudo git config --global 的环境问题:

也即是说,你需要通过执行:

        sudo git config --global --list

最少看到以下三个配置,才安装成功:

        url.https://.insteadof=git://

        url.http://.insteadof=ssh://

        http.sslverify=false

如何设置上述三个配置:

sudo git config --global url."https://".insteadOf git://

sudo git config --global url."http://".insteadOf ssh://

sudo git config --global http.sslverify false

如果是在sudo超级权限下 sudo npm install,上面3个指令也必须用 sudo 前缀执行

问题三:

npm ERR! /usr/bin/git ls-remote -h -t git://github.com/adobe-webplatform/eve.git
npm ERR! 
npm ERR! fatal: unable to connect to github.com:
npm ERR! github.com[0: 20.205.243.166]: errno=Connection refused


在超级和非超级权限下,发现用 http:// 替换 git:// 出现上述问题,也即是说必须要通过 https://去替代 git:// 才可以正常访问:

sudo git config --global url."https://".insteadOf git://

这样在使用 https:// 不行的情况下,会尝试使用 http:// 去再次尝试

所以最终配置如下,执行 sudo git config --global --list

http.sslverify=false

url.https://.insteadof=git://
url.http://.insteadof=ssh://

问题四:

npm ERR! network timeout at: https://registry.npmjs.org/screenfull
 

小技巧:

因为执行 sudo npm install 整个过程比较久,可以单独拿出报错的执行语句执行,如:

sudo /usr/bin/git ls-remote -h -t git://github.com/adobe-webplatform/eve.git

去检查上述替换是否生效

git 指令 访问 github.com 非常不稳定,也会容易导致上述拒绝访问,所以需要合理上网,让其网络访问稳定,需要指定代理:

http
sudo git config --global http.proxy http://127.0.0.1:7890(自己代理的端口号)
sudo git config --global https.proxy https://127.0.0.1:7890(自己代理的端口号)
ssh
sudo git config --global http.proxy 'socks5://127.0.0.1:1080'
sudo git config --global https.proxy 'socks5://127.0.0.1:1080'

为git设置了代理,在命令行执行 sudo /usr/bin/gi ls-remote -h -t git://github.com/adobe-webxxx 能够成功连到代理,但是在 sudo npm install 里面执行同一个指令,却无法正常连接git配置的代理,所以还需要指定 npm 的代理:

sudo npm config set proxy=http://server:port

sudo npm config set https-proxy http://server:port

设置了上述还不生效的话,就需要考虑下述的指令:

如果上述反复设置 sudo git config --global url."https://".insteadOf git://,在执行 npm install 中不生效,而在外部终端执行却生效,就需要执行:

sudo npm cache clean --force

sudo npm cache clear --force

发现清理了 npm cache 后,上述 git config 相关设置,就可以在 npm install 执行中生效了

提供大家遇到这个问题的一些讨论:

https://github.com/PanJiaChen/vue-element-admin/issues/3859

如果尝试上述所有方法都不行,那就安装个 nvm 去管理多个 node 版本,通过 nvm ls-remote

查找最新的node版本去安装, 例如我写这个文章的时候,最新版本是:20.2.0,执行指令:

nvm install 20.2.0

后面再去执行 npm install --registry=https://registry.npmmirror.com 就没遇到上述所有的问题

当然会遇到 package.json 和 node_modules 需要权限的问题,这个可以通过 chown -v 修改文件夹权限问题,由于 npm install 过程中,需要访问 GitHub,所以需要通过 git config --global 设置代理,如:

git config --global http.https://github.com.proxy  http://your-ip:your-port

git config --global https.https://github.com.proxy https://your-ip:your-port

如果 npm run dev 遇到 ERR_OSSL_EVP_UNSUPPORTED 报错,又需要设置环境变量:

export NODE_OPTIONS=--openssl-legacy-provider

 重新执行 npm run dev 就没有其他异常!!真心累弄这个 npm 的环境;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值