在GitHub Pages部署React应用报权限错误与仓库不存在提示如何解决?
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
问题产生原因
- 本地设备未生成SSH密钥,或生成的SSH公钥未添加到你的GitHub账户的可信密钥列表中,GitHub无法识别当前操作的身份
- 本地项目配置的远程仓库地址使用SSH协议,但当前使用的SSH密钥对没有对应仓库的读写权限,比如仓库归属其他账户、你未被赋予协作权限
- 本地SSH代理未加载对应私钥,认证时无法读取到正确的密钥信息
- 使用gh-pages工具部署时,package.json内的仓库地址、homepage配置填写错误,指向了不存在或无权限的仓库
解决方法
- 首先验证本地SSH与GitHub的连通性,执行命令:
ssh -T git@github.com
若返回Hi 你的GitHub用户名! You've successfully authenticated...则代表连通正常,否则需要配置SSH密钥 - 若连通失败,生成新的SSH密钥,执行命令:
ssh-keygen -t ed25519 -C "你的GitHub注册邮箱"
老旧系统不支持ed25519算法的话替换为:ssh-keygen -t rsa -b 4096 -C "你的GitHub注册邮箱"
执行过程中一路回车即可,无需设置密码 - 打开用户目录下的
.ssh文件夹,找到后缀为.pub的公钥文件,复制全部内容,进入GitHub账户的设置页,找到「SSH and GPG keys」选项,新建SSH密钥,将复制的公钥粘贴保存即可 - 重新执行连通测试确认生效后,检查项目的远程仓库配置,执行命令:
git remote -v
确认返回的仓库地址是你有权限操作的目标仓库,若地址错误可执行命令修改:git remote set-url origin git@github.com:你的GitHub用户名/目标仓库名.git
不想使用SSH的话也可以替换为HTTPS地址:git remote set-url origin https://github.com/你的GitHub用户名/目标仓库名.git - 若使用gh-pages包部署,检查package.json中的homepage字段是否填写正确,格式为
https://你的GitHub用户名.github.io/目标仓库名 - 临时规避方案:执行命令将所有SSH协议的git请求强制转为HTTPS协议,后续用GitHub个人访问令牌认证即可:
git config --global url."https://github.com/".insteadOf git@github.com:
内容的提问来源于stack exchange,提问作者abhishek
相关产品推荐
相关产品推荐

