因为现在工作的网络环境有着非常严格的限制,。可以说,在最近的访问通过代理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://使用的9418port以及基于SSH的git@github.com格式的地址使用的22port在你的网络环境里(特别是代理服务端)被防火墙屏蔽了。这是极为常见的,大多数的代理环境基于安全考虑,会屏蔽除80(http)和443(https)之外的port。

那这是否意味着我们就不能在这样的网络环境里使用git://或git@github.com格式的地址呢?请继续看下文。


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

尽管能够在Github上使用HTTPS协议push代码(使用的是username在Github上的username和password)。但通常来说,使用SSH检出和提交代码是更为安全,更适合团队开发,那么怎么解决前文提到的问题呢?对此,Github通过将ssh的连接port指定为https使用的443,使用了另外一个主机名:ssh.github.com来解决这一问题,这样我们能够通过大多数代理server同意的443port,使用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文件配置是否正确了。成功登入后提示:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmx1aXNoZ2xj/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

方法二:假设在配置这些參数之前我们不能确定它们的正确性。我们能够先通过命令行的方式来指定这些參数,待验证通过后把这些參数写入到config文件中。

此时的命令要这样写:

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

成功登入后提示:

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmx1aXNoZ2xj/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

最后特别提醒的是,在上述配置验证成功后。我们从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

版权声明:本文博主原创文章,博客,未经同意不得转载。

Git代理服务器设置和访问Github的更多相关文章

  1. 配置 git 以ssh公钥访问github

    #生成ssh config touch .ssh/config chmod 600 config 填写: Host github.com User betachen Hostname ssh.gith ...

  2. github for window 中 git shell 设置代理方法和解决ssl证书错误的问题

    体验了一下传说中的 github for windows(操作git有很多的方法,我还没有学会,所以找了个简单的方法),听说用起来还不错,毕竟也开始接触了github.下载地址是 http://win ...

  3. myeclipse eclipse 使用git插件访问github 的解决方案

    具体的步骤很多帖子都有写,这里不再赘述,需要说明的一点,git插件的版本很重要,在官网上下载的最新版本在MyEclipse8.5,MyEclipse9.1,MyEclipse10上面都没有成功. 这里 ...

  4. Git链接到自己的Github(1)简单的开始

    好长时间没上来弄东西了,今天回来先开始弄下Git,之后再继续写uboot与kernel的编译,在版本控制下更加宏观地观察每次的变化. 1.在ubuntu中安装git $ sudo apt-get in ...

  5. 使用TortoiseGit来访问GitHub

    因为以前一直在用TSVN, 对其界面操作比较熟悉. 因此,决定不用Git Gui而是用TortoiseGit来访问GitHub. 安装TortoiseGit成功后, 1.运行PuTTY Key Gen ...

  6. git推送项目到github并使用gitee做镜像仓库

    2022最新版github入门教程,教你如何一步步创建自己的github账号并初始化仓库,然后使用git工具配置个人工作环境.配合gitee仓库,作为github的镜像仓库使用.这篇文章很基础,对萌新 ...

  7. (转)如何将本地git仓库上传到GitHub中托管+实践心得

    Git——新手入门与上传项目到远程仓库GitHub(转) - Chen_s - 博客园http://www.cnblogs.com/Chenshuai7/p/5486278.html 注意的问题: 1 ...

  8. Git 的深入理解与GitHub托管服务(转)

    源代码管理系统(SCM)与版本控制   版本控制是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统.   本地版本控制系统   许多人习惯用复制整个项目目录的方式来保存不同的版本,或许还会 ...

  9. 【Git】简单地使用github当做远程共享仓库

    简单地使用github当做远程共享仓库 1.进入各自的github,选取一个人的github作为总的远程共享仓库,其余成员每次修改完项目后pull request请求合并自己的修改内容. 2.其余开发 ...

随机推荐

  1. 300M无线路由器 TL-WR842N - TP-LINK官方网站

    300M无线路由器 TL-WR842N - TP-LINK官方网站 300M无线路由器TL-WR842N 11N无线技术.300Mbps无线速率 2x2MIMO架构.CCA技术,提升无线稳定性.扩大无 ...

  2. 从Hadoop骨架MapReduce在海量数据处理模式(包括淘宝技术架构)

    从hadoop框架与MapReduce模式中谈海量数据处理 前言 几周前,当我最初听到,以致后来初次接触Hadoop与MapReduce这两个东西,我便稍显兴奋,认为它们非常是神奇.而神奇的东西常能勾 ...

  3. linux下自助获取帮助

    几乎所有命令都可以用 -h 或者--help参数 获取命令的使用方法帮助 man ls   也可以获取ls命令的详细帮助信息 man -k XXX  可以查看包含关键字XXX的文档 还有一个更详细的命 ...

  4. python 学习笔记 10 -- 正則表達式

    零.引言 在<Dive into Python>(深入python)中,第七章介绍正則表達式,开篇非常好的引出了正則表達式,以下借用一下:我们都知道python中字符串也有比較简单的方法, ...

  5. c++中sort()及qsort()的使用方法总结

    当并算法具体解释请见点我 想起来自己天天排序排序,冒泡啊,二分查找啊,结果在STL中就自带了排序函数sort,qsort,总算把自己解脱了~ 所以自己总结了一下,首先看sort函数见下表:   函数名 ...

  6. WPF案例 (五) 对控件界面使用倒影

    原文:WPF案例 (五) 对控件界面使用倒影 在这个程序里对5个2D控件界面应用了垂直倒影,边缘模糊化和模型变换,在本例中,这5个2D控件为Border, 各包含了一幅Image,界面如下图所示,源码 ...

  7. Deploy Oracle 10.2.0.5 DataGuard on Red Hat Enterprise Linux 6.4

    系统:Red Hat Enterprise Linux 6.4 数据库:Oracle 10.2.0.5.0 Patch Set 4 主机:10dg1 192.168.1.91 10dg2192.168 ...

  8. JavaScript模板引擎

    JavaScript模板引擎实例应用   在之前的一篇名为<移动端基于HTML模板和JSON数据的JavaScript交互>的文章中,我向大家说明了为什么要使用JavaScript模板以及 ...

  9. leetcode - Pascal&#39;s Triangle

    Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5, Retu ...

  10. GDAL切割重采样遥感图像

    一个小测试程序开发全过程实录,完全新手入门级的实例,如果你还在为处理大影像而发愁,来试试这个称手的工具吧. Imagec 开发日记 2013-6-25 需求: 影像数据切割,重采样 数据切割的要求是简 ...