GitLab/GitHub仓库推送失败:Permission denied (publickey)问题求助
解决Git SSH权限拒绝(Permission denied (publickey))的步骤
1. 确认SSH密钥已被加载
运行命令:
ssh-add -l
如果看不到你的密钥指纹,说明密钥没被ssh-agent加载,执行:
ssh-add ~/.ssh/你的密钥文件名
(默认密钥文件名是id_rsa,如果是自定义名称替换成实际名字)
2. 用官方命令测试SSH连接
别用仓库名,用平台官方测试命令:
- GitHub测试:
ssh -T git@github.com
- GitLab测试:
ssh -T git@gitlab.com
如果还是拒绝,去对应平台的SSH设置页面,检查你添加的公钥是否和本地~/.ssh/id_rsa.pub的内容完全一致,注意不要有多余空格或换行。
3. 检查Git远程仓库地址
运行:
git remote -v
确认远程地址是SSH格式(比如git@github.com:用户名/仓库名.git),如果是HTTPS格式,改成SSH:
git remote set-url origin git@github.com:用户名/仓库名.git
4. 排查SSH配置文件
打开~/.ssh/config(Windows路径是C:\Users\你的用户名\.ssh\config),确保针对平台的配置正确,示例:
Host github.com HostName github.com User git IdentityFile ~/.ssh/你的密钥文件名
如果有多个密钥,要保证每个Host对应的密钥文件不混淆。
5. 修正文件权限(核心)
SSH对权限要求严格,必须设置正确:
- 密钥文件权限设为600:
chmod 600 ~/.ssh/id_rsa
- .ssh目录权限设为700:
chmod 700 ~/.ssh
- 公钥文件权限设为644:
chmod 644 ~/.ssh/id_rsa.pub
Windows用户右键文件→属性→安全,确保只有当前用户有读写权限,删除其他用户的权限。
6. 确认仓库权限
去GitHub/GitLab的仓库设置页面,检查你的账户是否还有写入权限——之前能推送现在失败,可能是权限被撤销,或者仓库归属发生了变更(比如从个人转到组织)。
如果以上步骤都无效,提供以下信息方便进一步排查:
ssh -vT git@github.com(GitHub)或ssh -vT git@gitlab.com(GitLab)的完整输出git remote -v的输出~/.ssh/config的内容(敏感信息打码)
内容的提问来源于stack exchange,提问作者rwright94
相关产品推荐
相关产品推荐

