如何解决Git推送时"所用认证密钥已被标记为只读"错误?
Git Push 报错 "The key you are authenticating with has been marked as read only" 的原因及解决方法
操作场景与报错信息
你执行以下操作后触发错误:
$ ... create new file ... $ git add * $ git commit -m "first-file" $ git push origin main
错误提示:
The key you are authenticating with has been marked as read only. fatal: could not read from remote repository. Please make sure you have the correct access rights and the repository exists
错误原因
- 本地SSH密钥文件权限配置错误,被识别为只读权限
- 当前使用的SSH密钥关联的账号,对目标远程仓库仅拥有只读访问权限,无推送(写入)权限
- 远程仓库的成员权限设置有误,你的账号未被授予写入权限
解决方法
1. 修复SSH密钥文件权限
本地SSH密钥权限必须严格限制,执行以下命令修正:
chmod 600 ~/.ssh/id_rsa # 替换为你的私钥文件名,如id_ed25519 chmod 644 ~/.ssh/id_rsa.pub # 对应公钥文件权限
2. 确认远程仓库权限配置
- 登录Git托管平台,进入目标仓库的权限设置页面
- 检查你的账号是否在仓库成员列表中,且拥有**Write(写入)**或更高权限
- 若为fork的仓库,确认推送地址是否指向你有权限的分支
3. 更换具备写入权限的SSH密钥
- 生成新的SSH密钥对:
ssh-keygen -t ed25519 -C "your_email@example.com"
- 将新生成的公钥(
~/.ssh/id_ed25519.pub)添加到Git托管平台的账号SSH设置中 - 重新克隆仓库或更新本地远程地址后再执行推送
4. 检查并修正远程仓库地址
查看当前远程地址:
git remote -v
若地址为只读类型或错误地址,更新为正确的可写入地址:
git remote set-url origin git@your-repo-url.git # 替换为你的仓库SSH地址
内容的提问来源于stack exchange,提问作者ad-dido29
相关产品推荐
相关产品推荐

