&引用;远程主机关闭到github.com的连接”;推的时候

&引用;远程主机关闭到github.com的连接”;推的时候,git,github,git-push,openssh,Git,Github,Git Push,Openssh,我有一个项目,每次我使用SSH密钥(在Windows上)将git推送到我的GitHub帐户时,命令行都会挂起几分钟,然后我最终得到远程主机关闭的到GitHub.com的错误连接。我可以成功地执行git pull或git fetch。我也可以做ssh-Tgit@github.com成功 我已经成功地推动这个项目一段时间了。我认为这个问题始于我切换到使用OpenSSH作为SSH代理,并将其配置为对不同的SSH帐户使用两个不同的密钥。但是,我已经禁用了单独的密钥(我重命名了我的.ssh\config文

我有一个项目,每次我使用SSH密钥(在Windows上)将git推送到我的GitHub帐户时,命令行都会挂起几分钟,然后我最终得到远程主机关闭的到GitHub.com的错误连接。我可以成功地执行git pull或git fetch。我也可以做
ssh-Tgit@github.com
成功

我已经成功地推动这个项目一段时间了。我认为这个问题始于我切换到使用OpenSSH作为SSH代理,并将其配置为对不同的SSH帐户使用两个不同的密钥。但是,我已经禁用了单独的密钥(我重命名了我的
.ssh\config
文件)进行测试,我仍然有相同的问题

我尝试将此项目克隆到我计算机上的另一个位置,对其进行更新,并执行
git推送
,这在新克隆的存储库中正常工作

以下是我原始回购的git remote show origin的结果

* remote origin
  Fetch URL: git@github.com:MyUserName/MyRepo.git
  Push  URL: git@github.com:MyUserName/MyRepo.git
  HEAD branch: master
  Remote branches:
    develop tracked
    master  tracked
    test    new (next fetch will store in remotes/origin)
  Local branches configured for 'git pull':
    develop merges with remote develop
    master  merges with remote master
  Local refs configured for 'git push':
    develop pushes to develop (fast-forwardable)
    master  pushes to master  (fast-forwardable)
下面是我新克隆的repo的git remote show origin的结果。请注意,
test
分支是我创建的一个新分支,因此我没有覆盖
master

* remote origin
  Fetch URL: git@github.com:MyUserName/MyRepo.git
  Push  URL: git@github.com:MyUserName/MyRepo.git
  HEAD branch: master
  Remote branches:
    develop tracked
    master  tracked
    test    tracked
  Local branches configured for 'git pull':
    master merges with remote master
    test   merges with remote test
  Local refs configured for 'git push':
    master pushes to master (up to date)
    test   pushes to test   (up to date)

我无法解释长挂起时间,但最终连接到github.com的
连接被远程主机关闭。
消息可能是由于您的SSH连接与github超时造成的。我最近帮助一位同事解决了一个类似的问题,我们的哈士奇预推钩在她的机器上需要很长时间才能完成。当钩子完成时,她收到了远程主机关闭的与github.com相同的
连接。
消息

我们发现解决方案是通过在她的
.ssh\config
文件中设置
ServerAliveInterval
ServerAliveCountMax
的值来保持她的连接。例如,添加以下设置将每隔60秒(保持连接处于活动状态)向服务器发送一个空数据包,持续30轮。这将为你赢得30分钟的连接时间

Host *
  ServerAliveInterval 60
  ServerAliveCountMax 30

您可以根据自己的使用情况调整值。

这听起来像是一个网络问题,但是如果您可以从同一台机器上的另一个克隆成功推送,那么这种可能性就更小了。Windows有一些神秘的文件系统行为,因此可能与其中之一有关。您可以使用
Git\u SSH\u COMMAND=“SSH-vvv”Git push origin master
(或任何分支)运行失败的推送Git Bash吗并编辑您的问题以包含输出?@bk2204我使用您在Git Bash中给我的命令尝试了它,它成功地在我的
master
develope
分支上推送。也许问题出在OpenSSH上?