文档章节

Git代理设置与访问Github

猪刚烈
 猪刚烈
发布于 2014/10/12 11:47
字数 1393
阅读 110
收藏 0
由于目前工作的网络环境有着很严格的限制,可以说最近在通过代理访问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://或git@github.com格式的地址访问,则在某些代理环境下可能会报出如下错误:

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的git@github.com格式的地址使用的22端口在你的网络环境里(特别是代理服务端)被防火墙屏蔽了。这是极为常见的,大多数的代理环境基于安全考虑,会屏蔽除80(http)和443(https)之外的端口。那这是否意味着我们就不能在这种网络环境里使用git://或git@github.com格式的地址呢?请继续看下文。


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 git@ssh.github.com

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

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

ssh -o ProxyCommand="/path/to/connect -H 代理主机:端口 %h %p" -i "/path/to/your/github_private_key" -T -p 443 git@ssh.github.com

成功登入后提示:


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


最后特别提醒的是,在上述配置验证成功后,我们从github上检出项目时务必记得修改主机名,把 git@github.com改为 git@ssh.github.com
以检出opentsdb项目为例,命令要从

git clone git@github.com:OpenTSDB/opentsdb.git

变为:

git clone git@ssh.github.com:OpenTSDB/opentsdb.git


本文转载自:http://blog.csdn.net/bluishglc/article/details/37807501

共有 人打赏支持
猪刚烈
粉丝 22
博文 708
码字总数 110
作品 1
海淀
程序员
私信 提问
windows10+vs2015+python35安装 pyuv

1、 git clone https://github.com/saghul/pyuv 2、安装过程中会下载libuv的源码和gyp的源码,需要访问google的服务器。设置git代理。 香港代理 http://49.1.244.139:3128 https://183.111.1...

liwenhui
2016/01/14
762
0
github for window 中 git shell 设置代理方法和解决ssl证书错误的问题

因为国内特殊的网络环境,所以用github for windows,在使用git shell的clone命令是会出现这样的情况 git clone https://code.google.com/p/android-os-monitor.osmonitor/ Cloning into and...

subying
2014/01/17
0
2
Failed connect to github.com:443; No error

任务目标:将线上已有的https://github.com/eyjian/mooon.git克隆到本地的E:GitHubmooon目录 问题描述:使用Git的Windows客户端UI工具GitHub执行克隆操作时报错,查看它的日志,难发现问题,...

一见蓝天
2015/03/13
0
0
github for window的代理设置方法

前面说到,git shell通过代理的方式是实现git功能。我始终觉得GitHub这个界面软件是可以使用系统的代理的。毕竟界面软件容易操作,呵呵。  经搜索发现结果大都说到一个操作,那就是修改Git...

subying
2014/01/20
0
2
在windows上通过代理访问github.com

公司上网用代理,但是git 与ssh似乎没开代理。导致无没访问github.com 来更新我 的配置文件。下面是解法。 github.com 的git 提供了三种方式: http:// git:// 与ssh 方式 git:// 需要用到s...

mj4738
2012/05/16
0
1

没有更多内容

加载失败,请刷新页面

加载更多

解决Python3.7不能安装tensorflow的问题

# Mac pip install https://download.tensorflow.google.cn/mac/cpu/tensorflow-1.12.0-py3-none-any.whl # Linux CPU wget https://storage.googleapis.com/tensorflow/linux/cpu/tensorflo......

陆朋
16分钟前
1
0
基于React+Redux的SSR实现方法

为什么要实现服务端渲染(SSR) 总结下来有以下几点: SEO,让搜索引擎更容易读取页面内容 首屏渲染速度更快(重点),无需等待js文件下载执行的过程 代码同构,服务端和客户端可以共享某些代码...

嫣然丫丫丫
16分钟前
1
0
通过Ajax方式绑定select选项数据的实例

今天小编就为大家分享一篇通过Ajax方式绑定select选项数据的实例,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。 问题描述 在编写Web页面的时候常常需...

前端攻城小牛
22分钟前
1
0
exportfs命令 FTP介绍

12月10日任务 14.4 exportfs命令 14.5 NFS客户端问题 15.1 FTP介绍 15.2/15.3 使用vsftpd搭建ftp 1.exportfs命令 exportfs 命令, 常用选项 -a 全部挂载或者全部卸载 -r 重新挂载 -u 卸载某一...

hhpuppy
25分钟前
0
0
CP2102六合一多功能串口模块使用

这是一个非常好用的调试、烧录接口工具,价格便宜(淘宝10元左右),支持接口全面,简单易用。 一、在电脑上安装CP210x USB驱动 点击此处下载驱动 二、功能选择及接线

NB-One
26分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部