推送新建分支时遇Connection to gitlab closed by remote错误,求解决方案
解决GitLab推送时「Connection to gitlab closed by remote host」的SSH Key相关问题
这种情况确实大概率和SSH Key有关——毕竟其他仓库能正常操作,说明网络层面基本没问题,咱们一步步排查修复:
先确认本地SSH Key是否关联到GitLab账号
- 打开终端,查看当前本地SSH公钥内容:
如果用的是更安全的Ed25519密钥,就执行:cat ~/.ssh/id_rsa.pubcat ~/.ssh/id_ed25519.pub - 登录GitLab后台,进入「个人设置」→「SSH Keys」,检查列表里有没有和终端输出完全一致的公钥。如果没有,直接复制本地公钥内容粘贴进去,给Key加个易识别的备注(比如当前设备名称),然后保存。
- 打开终端,查看当前本地SSH公钥内容:
测试SSH连接到GitLab的连通性
在终端执行测试命令:ssh -T git@gitlab.com如果是自托管的私有GitLab,把
gitlab.com换成你的私有GitLab域名。如果输出「Welcome to GitLab, @你的用户名!」,说明SSH连接正常;如果还是报错,继续往下排查。排查SSH配置与文件权限问题
- SSH对文件权限要求很严格,先修正.ssh目录和密钥文件的权限:
chmod 700 ~/.ssh chmod 600 ~/.ssh/id_rsa # 替换成你的密钥文件名,比如id_ed25519 - 如果同时使用多个平台的SSH Key(比如GitHub+GitLab),需要配置
~/.ssh/config文件指定对应仓库的密钥:
编辑配置文件:
添加以下内容(按需替换密钥路径):vim ~/.ssh/config
保存后再重新测试SSH连接。Host gitlab.com HostName gitlab.com User git IdentityFile ~/.ssh/id_rsa_gitlab
- SSH对文件权限要求很严格,先修正.ssh目录和密钥文件的权限:
重新生成SSH Key(极端情况)
如果上面的步骤都无效,试着生成全新的SSH Key:ssh-keygen -t ed25519 -C "你的注册邮箱@xxx.com"一路回车使用默认设置即可,然后把新生成的公钥重新添加到GitLab账号,再测试推送。
检查Git客户端的SSH配置
针对SourceTree和Git Desktop这类GUI客户端:- SourceTree:进入「设置」→「Git」→「SSH客户端」,选择「OpenSSH」(而非内置客户端),确保使用系统默认的SSH配置。
- Git Desktop:进入「设置」→「Git」,检查「SSH Executable」是否选择「系统默认」。
- 可以尝试清除SSH缓存:
之后重启客户端再尝试推送。ssh-add -D ssh-add ~/.ssh/你的密钥文件名
如果试过这些还是不行,可以再检查下目标GitLab仓库的权限(比如你是否拥有推送权限),不过结合你其他仓库正常的情况,大概率还是SSH Key相关的问题。
内容的提问来源于stack exchange,提问作者محمد خير الخلق
相关产品推荐
相关产品推荐

