Gitlab通过SSH推送代码报错:私钥与公钥不匹配如何排查?
问题原因及解决办法
核心问题是本地私钥/c/Users/user/.ssh/id_rsa与你添加到GitLab账户的公钥不匹配,错误提示第一条已经明确指出这一点,后续的Permission denied是这个问题导致的连锁反应。
可能的具体原因:
- 你上传到GitLab的公钥,并非本地
id_rsa对应的id_rsa.pub(比如生成了多组密钥,复制时选错了文件,或者复制公钥内容时遗漏/多了字符、换行) - 本地私钥文件
id_rsa被手动修改、损坏,导致与原配对公钥校验失败
解决步骤:
验证本地密钥对是否匹配
执行以下命令,根据私钥生成对应公钥:ssh-keygen -y -f /c/Users/user/.ssh/id_rsa将输出的内容和GitLab账户中已添加的公钥对比,若不一致,说明确实不匹配。
重新生成并上传正确的密钥对
生成新的RSA密钥对(替换为你的邮箱):ssh-keygen -t rsa -b 4096 -C "your_email@example.com"按回车默认保存到
/c/Users/user/.ssh/目录,若设置密码则输入(可选)。然后打开/c/Users/user/.ssh/id_rsa.pub,复制全部内容,粘贴到GitLab账户的SSH密钥设置页面。确保SSH代理加载正确私钥
执行命令加载私钥:ssh-add /c/Users/user/.ssh/id_rsa若设置了密钥密码则输入,之后测试GitLab连接:
ssh -T git@gitlab.com成功时会显示你的GitLab用户名。
检查仓库远程地址正确性
确认仓库的origin地址格式正确:git remote -v正常地址应为
git@gitlab.com:你的用户名/项目名.git,若有误则用以下命令修正:git remote set-url origin git@gitlab.com:你的用户名/项目名.git
内容的提问来源于stack exchange,提问作者Вадим Яковлев
相关产品推荐
相关产品推荐

