git push/pull超时

23

我无法通过公司 VPN 将代码推送/拉取到 GitHub:

git push origin master
ssh: connect to host github.com port 22: Connection timed out
fatal: The remote end hung up unexpectedly

我认为这是一个防火墙问题,因为如果我断开 VPN 连接,它就可以正常工作。是否有任何方法来解决这个问题?或者当我需要推送/拉取时,我只能断开 VPN 连接吗?

5个回答

14

不确定您使用的是哪种类型的VPN,但这种效果通常是由于VPN设置将所有流量路由到VPN上造成的。您可以通过更新路由表以将流量路由回以太网(我假设)接口而不是经过VPN来解决该问题。

例如,route add 65.74.177.129 eth0 将会通过eth0路由GitHub的流量。这是Linux语法;Windows也有类似的“route”命令。

(这不是一个真正的Git特定问题,实际上您应该能够通过尝试使用telnet、nc或PuTTY等任何客户端连接到github.com的22端口来演示此问题:sshd通常会在您连接时打印其版本号的横幅)


如果您按照我在此答案中提出的建议检查网络 MTU 是否存在问题,则仍然可以通过 VPN 进行路由。https://dev59.com/EWYq5IYBdhLWcg3w4Edx - Phil Street

4

我曾经遇到同样的问题,添加一个针对Github的路由也解决了我的问题。

在Windows(或者像我一样使用cygwin)中的命令是:route add <ip> <gateway>。所以对我来说解决问题的方法就是:route add 207.97.227.239 192.168.0.1

请注意,与araqnid两年前使用的IP相比,我使用了不同的IP地址来访问github.com :)

如果您不确定添加的路由是否仍然有效,请在Windows或cygwin中键入tracert github.com以查看数据包的路由路径。如果第一个命中点似乎位于您的公司内部,则表示您添加的路由已经无效,您需要添加新的路由。


你能告诉我如何在Mac上做吗? - Maddy

3

Mac用户:我在安装完更新版的OS X后立即遇到了这个问题。在你深入更改网络设置之前,建议进行额外的重新启动。这对我来说解决了问题。


2

在您的机器上增加ssh连接超时时间。

创建~/.ssh/config文件(如果不存在)。

将SSH ServerAliveInterval ServerAliveCountMax设置添加到文件中,例如:

Host *
     ServerAliveInterval 86400
     ServerAliveCountMax 4

已通过 VPN 在 Ubuntu 18.04.4 LTS 上进行测试。

更多信息请查看 此处


使用Host github.com代替Host *以使更具体。 - spuder

0
我发现这个问题出现在使用 git:// URL 的 github.com 仓库上,比如 git://github.com/pre-commit/pre-commit-hooks。将它们切换为 git+ssh:// 对我来说解决了问题;例如,上述 URL 变为 git+ssh://git@github.com/pre-commit/pre-commit-hooks
这可能需要你先在 github 上 设置 ssh 密钥
如果你不想手动更改所有的 URL,你可以配置 git 来交换它们:
git config --global url."git@github.com:".insteadOf "git://github.com/"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接