借助代理解决github被墙
【Win10环境下】自从配置好本地Git
后,一般都能够推送到GitHub
,但是过段时间后(甚至不用),经常会因为一些奇怪的问题导致无法推送上去,本文尝试通过使用代理解决因为Github
被墙所产生的问题。
一、什么是代理?
代理(英语:Proxy)也称网络代理,是一种特殊的网络服务,允许一个终端(一般为客户端)通过这个服务与另一个终端(一般为服务器)进行非直接的连接。源自:代理服务器 - 维基百科,自由的百科全书 (wikipedia.org)
通俗的理解就是,本来客户端是直连服务端的,现在往它们的通信线路中间插入了一个服务,这个服务将代替客户端访问服务端,同时将服务端的响应返回到客户端。
这样带来的好处就是:
- 能够突破某些限制,进而能够访问被过滤的网站
- 提高访问的速度
- 隐藏真实的IP
- 突破网站的区域限制。
为了能够使用代理,你必须手头上能够有一台服务器(该服务器能够直接访问GitHub
不受限制)或者是VPN
。
因为VPN
工具实际上已经是通过代理的方式来协助我们上网了,所以可以在Git
发起SSH
请求的时候通过它建立的线路来访问,这也是本文采用的方法。
二、问题描述
在这里主要是重新提一下我遇到的问题。
当我将本地提交的代码想要推送到远程仓库时,如GitHub
,经常会报如下内容的错误:
1 |
|
当然,遇到这个错误的时候,首先要确定你的远程仓库路径是正确的并且具备一定的访问权限,不然就不好确定是哪方面的问题了。我当时遇到这个问题的时候,也尝试了许多比较常见的方法(以关键词kex_exchange_identification:Connectlon closed by remote host
进行搜索),但是没有什么用。后面甚至突然出现能够推送上去的情况,这让我联想到可能是被墙的原因导致推送并不稳定。
但是我也开了全局代理,我以为这样它就不会绕开代理了,但实际上,我在日志上并没查到有访问GitHub
的日志信息,故我猜测还是需要单独设置Git
走代理模式。
三、解决方案
如果没有配置Git采用SSH方式来访问
GitHub
的话,请配置后再按如下的方式进行设置,具体配置方式请自行百度。
前往C:\Users\your_user_name\.ssh
(像我的用户名为pSomng
,所以路径是C:\Users\pSomng\.ssh
)目录下,找到config
文件,如果没有就创建一个,然后配置如下内容:
1 |
|
记住要根据自己实际的参数值来实际配置上面这些参数。
里面提到的7890
是我的VPN
工具所采用的端口号:
然后执行下面的命令进行测试:
1 |
|
如果出现下面的内容,则说明已经配置成功了
Hi xxxx! You’ve successfully authenticated, but GitHub does not provide shell access.
好了,现在就可以愉快地获取GitHub
的内容、上传数据到GitHub
了。
如果本文存在哪里说的不对的地方,请您指出以便于我及时更改,谢谢!