因为现在工作的网络环境有着非常严格的限制,。可以说,在最近的访问通过代理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. 理解并解决GBK转UTF-8奇数中文乱码(转)

    最近在做一个反馈功能,把数据反馈到对方公司网站,我公司是GBK编码,对方公司是UTF-8编码.因此,我需要将GBK编码数据转换成UTF-8编码数据,这样对方网站才不会乱码.最简单的方法是将HttpCl ...

  2. oracle存储过程、声明变量、for循环(转)

    oracle存储过程.声明变量.for循环 1.创建存储过程 create or replace procedure test(var_name_1 in type,var_name_2 out ty ...

  3. 最短路径算法-Dijkstra算法的应用之单词转换(词梯问题)(转)

    一,问题描述 在英文单词表中,有一些单词非常相似,它们可以通过只变换一个字符而得到另一个单词.比如:hive-->five:wine-->line:line-->nine:nine- ...

  4. SmartDraw2008破解过程总结

    SmartDraw2008破解过程总结作者:chszs  原创转载请保留作者名. 按下列步骤完毕,保证能够支持中文. 一.所需软件:1)SmartDraw2008安装软件:2)SmartDraw200 ...

  5. 如何在cocos2d项目中enable ARC

    如何在cocos2d项目中enable ARC 基本思想就是不支持ARC的代码用和支持ARC的分开,通过xcode中设置编译选项,让支持和不支持ARC的代码共存. cocos2d是ios app开发中 ...

  6. python语言学习7——数据类型和变量

    整数 python可以处理任意大小的整数,包括负整数,在程序中的表示方法和数学上的写法一样 计算机由于使用二进制,有时候采用十六进制表示整数比较方便,十六进制数用0x前缀 浮点数 简单的小数就直接用小 ...

  7. Ajaxterm-0.10-8.el5.noarch.rpm CentOS 5 (RHEL 5) Download

    Ajaxterm-0.10-8.el5.noarch.rpm CentOS 5 (RHEL 5) Download Install Howto Download the latest epel-rel ...

  8. POj 1879 Tempus et mobilius Time and motion (模拟+群)

    题目特别长,大意为球的传递. 三个轨道,一个库.各自是分钟单位的轨道.5min单位的轨道.一小时单位的轨道.还有就是n容量的库. 每过一分钟,一个小球从库里面出来,库符合先进先出,进入分钟轨道.假设分 ...

  9. Java反射机制小例子

    package com.wjy.main; import java.io.Console; import java.lang.reflect.Constructor; import java.lang ...

  10. httl开源JAVA模板引擎,动态HTML页面输出

    HTTL(Hyper-Text Template Language)是一个适用于HTML输出的开源JAVA模板引擎,适用于动态HTML页面输出,可用于替代JSP页面,它的指令类似于Velocity. ...