配置GitHub SSH后GitLab推送报错,如何恢复原有SSH公钥设置?
故障根因
配置GitHub SSH时,要么生成的新密钥覆盖了GitLab原本使用的默认id_rsa密钥对,要么SSH客户端未配置多平台密钥映射规则,默认使用GitHub的密钥向GitLab发起认证,导致公钥校验失败,触发Permission denied (publickey)报错。
修复操作步骤
- 检查本地留存的密钥文件
执行命令ls ~/.ssh,确认存在两组密钥对:GitLab对应的旧密钥(通常是id_rsa/id_rsa.pub)、GitHub对应的新密钥(如果生成时自定义了名称,比如id_rsa_github/id_rsa_github.pub,按你实际的文件名来)。如果GitLab对应的密钥已经被覆盖删除,重新生成一组命名为id_rsa_gitlab的密钥对,把公钥重新上传到GitLab账户的SSH密钥设置页即可。 - 配置SSH多域名映射规则
打开~/.ssh/config文件(不存在就手动新建),写入以下配置内容,注意替换里面的私钥路径为你实际的文件路径:
# GitLab 专属配置 Host gitlab.com HostName gitlab.com PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa User git # GitHub 专属配置 Host github.com HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa_github User git
如果你用的是自建GitLab服务,将上面的gitlab.com替换为你的GitLab实际域名即可。
- 验证SSH连通性
执行命令ssh -T git@gitlab.com,如果返回GitLab的欢迎提示,说明认证成功。如果仍有报错,执行chmod 600 ~/.ssh/你的GitLab私钥文件名修正私钥权限后再次验证即可。 - 测试仓库推送
进入本地GitLab项目目录,执行git push测试推送,即可恢复正常访问。
内容的提问来源于stack exchange,提问作者RetroCausalElectron
相关产品推荐
相关产品推荐

