我无法从我的公司 vpn git push/pull 到 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 将流量路由回 github 来解决此问题。
例如route add 65.74.177.129 eth0
,将通过 eth0 将流量路由到 github。这是 Linux 语法;Windows 也有一个大致相似的“路由”命令。
(这实际上并不是一个 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 相比,我使用的 github.com 的不同 IP。:)
如果您不确定您添加的路由在一段时间后是否仍然有效,只需键入(在 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 上测试。
在这里查看更多