我无法通过公司 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 连接吗?
不确定您使用的是哪种类型的VPN,但这种效果通常是由于VPN设置将所有流量路由到VPN上造成的。您可以通过更新路由表以将流量路由回以太网(我假设)接口而不是经过VPN来解决该问题。
例如,route add 65.74.177.129 eth0
将会通过eth0路由GitHub的流量。这是Linux语法;Windows也有类似的“route”命令。
(这不是一个真正的Git特定问题,实际上您应该能够通过尝试使用telnet、nc或PuTTY等任何客户端连接到github.com的22端口来演示此问题:sshd通常会在您连接时打印其版本号的横幅)
我曾经遇到同样的问题,添加一个针对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用户:我在安装完更新版的OS X后立即遇到了这个问题。在你深入更改网络设置之前,建议进行额外的重新启动。这对我来说解决了问题。
在您的机器上增加ssh连接超时时间。
创建~/.ssh/config文件(如果不存在)。
将SSH ServerAliveInterval ServerAliveCountMax设置添加到文件中,例如:
Host *
ServerAliveInterval 86400
ServerAliveCountMax 4
已通过 VPN 在 Ubuntu 18.04.4 LTS 上进行测试。
更多信息请查看 此处。
Host github.com
代替Host *
以使更具体。 - spudergit://
URL 的 github.com 仓库上,比如 git://github.com/pre-commit/pre-commit-hooks
。将它们切换为 git+ssh://
对我来说解决了问题;例如,上述 URL 变为 git+ssh://git@github.com/pre-commit/pre-commit-hooks
。git config --global url."git@github.com:".insteadOf "git://github.com/"