Gitea SSH认证成功但无法推送至远程仓库问题求助
解决Gitea部署密钥无法推送代码的问题
我之前碰到过几乎一模一样的情况,给你几个针对性的排查和解决方向:
1. 检查部署密钥的写入权限(最常见原因)
Gitea的部署密钥默认是只读权限,只能拉取代码不能推送。你需要回到仓库的设置页面:
- 进入
[Organization]/[MyRepo] > 设置 > 部署密钥 - 找到你添加的那个远程用户SSH密钥,点击编辑
- 确认勾选了Allow write access(允许写入权限)选项,保存后再尝试
git push -u origin master
2. 确认部署密钥的关联对象正确
要确保你是把密钥添加到目标仓库的部署密钥列表里,而不是个人账号的SSH密钥或者其他仓库的部署密钥。如果密钥关联错了仓库,自然会出现权限拒绝的问题。
3. 验证Gitea存储目录的权限(Gentoo环境)
因为你的Gitea运行在git用户下,需要确保git用户对仓库的存储目录有读写权限:
- 打开Gitea服务器的终端,执行命令查看目标仓库的权限:
ls -ld /var/lib/gitea/repositories/[Organization]/[MyRepo].git - 确保目录的所有者或所属组是
git,如果不是,可以用下面的命令修正:chown -R git:git /var/lib/gitea/repositories/[Organization]/[MyRepo].git
4. 强制指定SSH密钥测试(远程服务器端)
有时候远程服务器的SSH配置会默认使用其他密钥,导致实际连接Gitea的密钥不是你添加的部署密钥。可以强制指定密钥测试:
- 在远程服务器的普通用户终端执行:
ssh -i ~/.ssh/你的部署密钥文件名 git@[gitea_server_ip] - 确认认证成功后,再执行
git push -u origin master,看是否能正常推送。
内容的提问来源于stack exchange,提问作者Tarkaros




