Git代理设置与访问Github

由于目前工作的网络环境有着很严格的限制,可以说最近在通过代理访问Github上颇费了一些周折,也积累了一些相关的经验,觉得有必要备忘一下。本着”不重新发明轮子“的宗旨,本文不会对Github代理设置的每一个细节进行赘述,文中会给出现成的参考文章,这里要做的是针对一些重要的问题进行解释和补充,相信一定能给遇到同样问题朋友以帮助。本文原文出处:http://blog.csdn.net/bluishglc/article/details/37807501 严禁任何形式的转载,否则将委托CSDN官方维护权益!

1. 别折腾了,请先屏蔽NTLM验证!

首先,如果你的网络代理使用的是NTLM验证,不要作任何无谓的“挣扎”,请先安装Cntlm,建立一个无须身份验证的普通HTTP代理,因为目前版本的GIT不支持NTLM验证的代理,不先借助Cntlm屏蔽掉NTLM验证,后续的任何工作都是无意义的。关于Cntlm的安装和配置请参考:http://blog.csdn.net/bluishglc/article/details/37600773

2. Git代理配置走起

关于Git代理的配置请参考:http://jixiuf.github.io/git/git-proxy-on-windows.html 这里对文中提到的ssh的config文件简单地解释一下,这个文件主要是保存一些经常访问的目标主机的连接配置,很像Putty里保存的session。config文件的结构是是以Host开头的配置项是作为一组,Host项之后到下一个Host之前的所以配置项都是针对这个Host配置的!另外,文中config文件提到的connect是一种代理转发工具,对一个简单的命令行工具不太可能设计如何配置代理,或者像SSH这样为了保证程序本身功能的单一,把代理配置委托第三方工具实现,这就是connect的作用。

3. https://?可以!git://?没门!

安装配置好Cntlm,参看前面的文章进行配置,我们就可以在Github上检入检出https://描述的repository了,如果你尝试使用git://或[email protected]格式的地址访问,则在某些代理环境下可能会报出如下错误:

HTTP/1.1 502 Proxy Error ( The specified Secure Sockets Layer (SSL) port is not allowed. Forefront TMG is not configured to allow SSL requests from this port. Most Web browsers use port 443 for SSL requests.  )

引起这一问题的原因是git://使用的9418端口以及基于SSH的[email protected]格式的地址使用的22端口在你的网络环境里(特别是代理服务端)被防火墙屏蔽了。这是极为常见的,大多数的代理环境基于安全考虑,会屏蔽除80(http)和443(https)之外的端口。那这是否意味着我们就不能在这种网络环境里使用git://或[email protected]格式的地址呢?请继续看下文。


4. 幸好有你:SSH over the HTTPS port

虽然可以在Github上使用HTTPS协议push代码(使用的是用户名在Github上的用户名和密码),但通常来说,使用SSH检出和提交代码是更为安全,更适合团队开发,那么怎么解决前文提到的问题呢?对此,Github通过将ssh的连接端口指定为https使用的443,使用了另外一个主机名:ssh.github.com来解决这一问题,这样我们可以通过大多数代理服务器允许的443端口,使用SSH访问Github了,这一点在前面参考文章中提到的config文件里也配置过了,就是Host为ssh.github.com的部分,关于这部分的说明和配置,Github的官方帮助文档也有说明:https://help.github.com/articles/using-ssh-over-the-https-port。这里我只想说一下如何验证配置已经成功,显然,只要我们能通过SSH登入目标主机就表明配置正确了:

方法一:像我们前面提到的参考文章,它把ssh.github.com的配置参数写进了ssh的config文件,这样可以在命令行工具中使用

ssh -T -p 443 [email protected]

就能验证config文件配置是否正确了,成功登入后提示:

方法二:如果在配置这些参数之前我们不能确定它们的正确性,我们可以先通过命令行的方式来指定这些参数,待验证通过后把这些参数写入到config文件中。此时的命令要这样写:

ssh -o ProxyCommand="/path/to/connect -H 代理主机:端口 %h %p" -i "/path/to/your/github_private_key" -T -p 443 [email protected]

成功登入后提示:

方法三:我们还可以通过putty以另外一咱完全独立和便捷的方式来验证,即在putty中建立一个session,目标主机是ssh.github.com,端口443,登入用户名443,指定好你的Github私钥(注意:putty使用的私钥与openssh的私钥格式是不一样的,如果你没有保存putty格式的私钥就需要通过putty的keygen工具生成或转换),设定好代理主机和端口然后连接,如果出现如下图的提示,也表示配置正确!

最后特别提醒的是,在上述配置验证成功后,我们从github上检出项目时务必记得修改主机名,把[email protected]改为[email protected]ssh.github.com

以检出opentsdb项目为例,命令要从

git clone [email protected]:OpenTSDB/opentsdb.git

变为:

git clone [email protected]:OpenTSDB/opentsdb.git

Git代理设置与访问Github

时间: 2024-10-12 08:31:34

Git代理设置与访问Github的相关文章

git无法clone远程代码库及git代理设置

git作为一个版本管理神器,日常工作中自然也就少不了了:特别是Android开发,github和google是逃不过的了.然而很多时候需要用到git克隆远程的代码库,众所周知的原因google.android官网都是无法访问的.那么我们怎么克隆诸如:android.googlesource.com下的库呢? 工具:git.vpn代理 实例:git clone https://android.googlesource.com/platform/frameworks/volley/ D:\Andro

git代理设置方法

客户公司办公,上外网需要代理,临时查一下资料,记录一下: 1.设置代理: git config --global http.proxy http://IP:Port 2.代理设置完成后,查看设置是否生效: git config -–get -–global http.proxy 3.删除代理设置 git config --global --unset http.proxy

取消Git代理设置

昨天由于在用sourceTree上传下拉代码的时候,速度实在太慢,就照着百度上的方法设置了代理,结果导致sourceTree无法访问服务器,经检查排除发现可能是因为公司网络不能使用代理,被防火墙挡住了. 经过多种方法试验,最后发现一种可行方案并解决问题: 我们在设置代理的时候在终端设置: git config --global https.proxy http://127.0.0.1:1080 git config --global https.proxy https://127.0.0.1:1

git代理设置

git config --global http.proxy http://127.0.0.1:1080git config --global https.proxy https://127.0.0.1:1080git config --global --unset http.proxygit config --global --unset https.proxy 原文地址:https://www.cnblogs.com/wenlin-gk/p/9994098.html

centos7上代理设置

有时候,我们无法直接连接外部网络,可能需要连接代理服务器,才能访问外网,进行软件包安装,程序升级,此时我们需要配置一些代理设置,这样才能保证网络正常. 一.全局服务器环境变量 置全局代理,方法如下: 修改 /etc/profile 文件,添加下面内容: http_proxy=http://username:[email protected]:8080/ ftp_proxy=http://username:[email protected]:8080/ export http_proxy expo

Ionic 环境搭建,代理设置

一.介绍 Ionic 是一个 CSS+JS 界面框架,Ionic 使得开发者能够使用 HTML 编写出手机 App 界面,外观和原生手机 App 非常相似. Ionic CLI 使得开发者能够将 Ionic 开发的界面打包成 IOS 的 .ipa 包,或者 Android 的 .apk 包. 二.搭建 Ionic 环境 1. 首先安装 node.js 和 npm a. 如果你是在 Windows 平台下,请下载 node.js 的安装包并安装,安装包里面自带 npm.地址是:https://no

linux 下 git gem 等代理设置问题

github.com,作为程序员的代码仓库,我们经常会用到.但有时候我们不能直接通过网络链接它,只能通过代理. 这里我有一台代理服务器,起初我以为在终端设置了代理环境就行了,其设置为在你的~/.bashrc里增加以下几行: [python] view plaincopy export http_proxy="http://proxy-server:3128/" export https_proxy="http://proxy-server:3128/" export

轻松把玩HttpClient之设置代理,可以访问FaceBook

前面的文章介绍了一些HttpClient的简单示例,本文继续采用示例的方式来演示HttpClient的功能. 在项目中我们可能会遇到这样的情况:为了保证系统的安全性,只允许使用特定的代理才可以访问,而与这些系统使用HttpClient进行交互时,只能为其配置代理. 这里我们使用goagent代理访问脸书来模拟这种情况.facebook由于某些原因被封,只能通过代理来访问,所以正好也符合我们现在的演示需求.现在在浏览器上访问是可以访问的: 可以看到facebook采用的也是https的方式,而且该

linux内网机器访问外网代理设置

1.检查机器 在操作中发现访问外网的机器本身不能使用yum 安装软件,故需要配置yum安装源.如果可以的,这步可忽略. [[email protected] test]# lsb_release -a LSB Version:    :core-4.0-amd64:core-4.0-ia32:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0-amd64:printing-4.