Ubuntu Linux下通过代理(proxy)使用git上github.com
Ubuntu Linux下通过代理(proxy)使用git上github.com
github.com,作为程序员的代码仓库,我们经常会用到。但有时候我们不能直接通过网络链接它,只能通过代理。
这里我有一台代理服务器,起初我以为在终端设置了代理环境就行了,其设置为在你的~/.bashrc里增加以下几行:
- export http_proxy="http://proxy-server:3128/"
- export https_proxy="http://proxy-server:3128/"
- export ftp_proxy="http://proxy-server:3128/"
export http_proxy="http://proxy-server:3128/" export https_proxy="http://proxy-server:3128/" export ftp_proxy="http://proxy-server:3128/"
设置好以后,使用以下命令使其启动
- source ~/.bashrc
source ~/.bashrc
然后测试wget是没有问题的,如下:
但使用git clone就不行
- git clone git@github.com:aborn/ulitcs.git
git clone git@github.com:aborn/ulitcs.git通过这两篇文章知道了原因:在windows上通过代理访问github.com 和 Using git over proxy
配制过程分为以下几步:
1. 安装socat,在ubuntu下使用以下命令安装
- sudo apt-get install socat
sudo apt-get install socat
2. 编辑一个脚本文件,名字为git-proxy ,内容如下
- #!/bin/sh
- # Use socat to proxy git through an HTTP CONNECT firewall.
- # Useful if you are trying to clone git:// from inside a company.
- # Requires that the proxy allows CONNECT to port 9418.
- #
- # Save this file as gitproxy somewhere in your path
- # (e.g., ~/bin) and then run
- # chmod +x git-proxy
- # git config --global core.gitproxy git-proxy
- #
- #
- # Configuration. Common proxy ports are 3128, 8123, 8000.
- _proxy=proxy-server
- _proxyport=3128
- exec socat STDIO PROXY:$_proxy:$1:$2,proxyport=$_proxyport
#!/bin/sh # Use socat to proxy git through an HTTP CONNECT firewall. # Useful if you are trying to clone git:// from inside a company. # Requires that the proxy allows CONNECT to port 9418. # # Save this file as gitproxy somewhere in your path # (e.g., ~/bin) and then run # chmod +x git-proxy # git config --global core.gitproxy git-proxy # # # Configuration. Common proxy ports are 3128, 8123, 8000. _proxy=proxy-server _proxyport=3128 exec socat STDIO PROXY:$_proxy:$1:$2,proxyport=$_proxyport
3. 将git-proxy放到一个目录下,如我将它放到/home/lisp/local/bin,并将该目录加入到PATH
- cp git-proxy /home/lisp/local/bin/
cp git-proxy /home/lisp/local/bin/将该目录加入到PATH,加入以下内容到~/.bashrc,然后souce ~/.bashrc
- export PATH=$PATH:/home/lisp/local/bin
export PATH=$PATH:/home/lisp/local/bin
- source ~/.bashrc
source ~/.bashrc
4. 修改~/.gitconfig,加入以下行和代理
- gitproxy = git-proxy
gitproxy = git-proxy我.gitconfig文件内容如下:
- [push]
- default = simple
- [user]
- name = aborn
- email = loveaborn@foxmail.com
- [core]
- editor = emacs
- gitproxy = git-proxy
- [https]
- proxy = http://proxy-server:3128
- [http]
- proxy = http://proxy-server:3128
[push] default = simple [user] name = aborn email = loveaborn@foxmail.com [core] editor = emacs gitproxy = git-proxy [https] proxy = http://proxy-server:3128 [http] proxy = http://proxy-server:3128
5. 下载转换协议文件connect.c,下载地址点击
只要下载connect.c文件即可,然后编译
- gcc -o connect connect.c
gcc -o connect connect.c
将编译后的文件connect也拷贝到/home/lisp/local/bin下
6. 修改~/.ssh/config,加入以下行
- ProxyCommand /home/lisp/local/bin/connect -H proxy-server:3128 %h %p
ProxyCommand /home/lisp/local/bin/connect -H proxy-server:3128 %h %p
我的~/.ssh/config文件内容如下:
- ProxyCommand /home/lisp/local/bin/connect -H proxy-server:3128 %h %p
- Host github.com
- User loveaborn@foxmail.com
- Port 443
- Hostname ssh.github.com
ProxyCommand /home/lisp/local/bin/connect -H proxy-server:3128 %h %p Host github.com User loveaborn@foxmail.com Port 443 Hostname ssh.github.com
注意这里的connect文件目录与第5步放置的目录一致。
以上步骤完成后,就行了,如下截图:
- git clone git@github.com:aborn/ulitcs.git
git clone git@github.com:aborn/ulitcs.git
- git push
git push
评论暂时关闭