拾遗笔记

在windows上通过代理访问github.com

Table of Contents

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

git://

需要用到socat这个软件,有windows 版的,它用cygwin 进行编译的,放心你不必
安装cygwin ,socat它自带了cygwin.dll可以单独运行
到这里下载
http://www.dest-unreach.org/socat/
http://www.gentilkiwi.com/telechargements-s43-t-socat.htm#englishversion
把socat 解压开后的目录加入到path路径下
然后需要写一个脚本

  #!/bin/bash
#这里是你对应的代理ip 及端口
_proxy=172.20.65.51
_proxyport=12080
exec socat STDIO PROXY:$_proxy:$1:$2,proxyport=$_proxyport

把这个脚本命名为git-proxy,加入到Path路径下
然后修改~/.gitconfig
在里面加入这样一条

[core]
gitproxy = git-proxy

或者运行

# git-proxy已经加入到path目录下
 git config --global core.gitproxy "git-proxy"

# git-proxy没有加入到path目录下
 git config --global core.gitproxy "/local/path/to/git-proxy"

此时对于git:/协议就支持了

例如 git clone git://github.com/jixiuf/anything-etags-plus.git

但是即使你费劲的配置好git://协议之后,却仍然没办法向github提交你的代码,因
为它需要ssh 的支持,
要想git push 命令可用,还需要继续做一些工作
参考了http://skim.la/2010/02/22/how-to-make-github-and-proxy-play-nicely-with-ssh/
但是不要费劲去找文中提到的connect.c 编译后的connect.exe了,因为现在的
connect.c connect_compile_on_linux 本站保存
msysGit bin目录下已经提供了这个文件。
只需要在~/.ssh/config文件中加入以下代码即可以了
注意我用的密钥是dsa 的而不是rsa 另外文件中的和种路径 及代理ip端口,你需要改
成你自已的

# 此行要改路径 代理ip 及port
ProxyCommand d:/usr/Git/bin/connect.exe -H 172.20.65.51:12080 %h %p

Host github.com
User git
Port 22
Hostname github.com

#此行要改路径及id_dsa 或id_rsa
IdentityFile "d:\.ssh\id_dsa"

TCPKeepAlive yes
IdentitiesOnly yes

Host ssh.github.com
User git
Port 443
Hostname ssh.github.com

#此行要改路径及id_dsa 或id_rsa
IdentityFile "d:\.ssh\id_dsa"

TCPKeepAlive yes
IdentitiesOnly yes

http(s) 协议

这种解法最简单:在~/.bashrc中加入以下代码

export http_proxy='http://myproxy.example.com:1080/'
export https_proxy='https://myproxy.example.com:1080/'
export ftp_proxy='http://myproxy.example.com:1080/'
export no_proxy = '.example.com'

Comments

comments powered by Disqus