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/"

设置好以后,使用以下命令使其启动

source ~/.bashrc

然后测试wget是没有问题的,如下:

但使用git clone就不行

 git clone [email protected]:aborn/ulitcs.git 

通过这两篇文章知道了原因:在windows上通过代理访问github.com 和 Using git
over proxy

配制过程分为以下几步:

1. 安装socat,在ubuntu下使用以下命令安装

 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

3. 将git-proxy放到一个目录下,如我将它放到/home/lisp/local/bin,并将该目录加入到PATH

cp git-proxy /home/lisp/local/bin/

将该目录加入到PATH,加入以下内容到~/.bashrc,然后souce ~/.bashrc

export PATH=$PATH:/home/lisp/local/bin
source ~/.bashrc

4. 修改~/.gitconfig,加入以下行和代理

gitproxy = git-proxy

我.gitconfig文件内容如下:

[push]
	default = simple
[user]
	name = aborn
	email = [email protected]
[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

将编译后的文件connect也拷贝到/home/lisp/local/bin下

6. 修改~/.ssh/config,加入以下行

 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 [email protected]
Port 443
Hostname ssh.github.com

注意这里的connect文件目录与第5步放置的目录一致。

以上步骤完成后,就行了,如下截图:

git clone [email protected]thub.com:aborn/ulitcs.git   

git push

注意:

1. 上面的proxy-server根据你的代理,设置为替换为你的代理服务器的ip地址或者域名

2. 上面的connect.c 文件、编译好的connect文件和git-proxy文件,也可以从这里下载connect.tar.gz 和git-proxy

3. 我的操作系统为Ubuntu 14.04LTS

Ubuntu Linux下通过代理(proxy)使用git上github.com,码迷,mamicode.com

时间: 2024-10-07 19:54:03

Ubuntu Linux下通过代理(proxy)使用git上github.com的相关文章

Ubuntu Linux下如何配置Android开发环境

下载和安装Win7系统Android开发环境中讲了怎样在Win7系统中安装Android开发环境,那么怎样在Linux系统中配置Android开发环境呢?本篇文章就将演示如何使用Eclipse.Android SDK和PhoneGap在Ubuntu 11.04环境下配置Android开发环境. 以下是在Ubuntu linux系统中配置Android开发环境的几个步骤:        1.安装Eclipse和Android SDK/PhoneGap所需软件包: 打开终端,输入下面命令完成题目所述

Ubuntu Linux下安装Oracle JDK

Ubuntu Linux下安装Oracle JDK Dennis Hu 2014-4-22 说明:因为非常多系统不支持使用OpenJDK,因此在ubuntu下会须要安装Oracle JDK.而Oracle JDK的安装貌似没有提供apt方式,因此安装Oracle JDK的方式相对麻烦一些,我常常安装,为了方便别人同一时候方便自己查看,把它记下来. 第一步:区分32位还是64位操作系统 先确定你的ubuntu linux是32位还是64位的,方法非常多,这里介绍一种就可以. $uname -a 第

ubuntu(linux)下谷歌浏览器跨域问题,XMLhttprequest跨域问题

ubuntu(linux)下谷歌浏览器跨域问题 今天在使用谷歌浏览器实时调试代码的时候遇到这样的错误: XMLHttpRequest cannot load http://localhost:8080/ No ‘Access-Control-Allow-Origin’ header is present on the requested resource. Origin ‘http://127.0.0.1’ is therefore not allowed access. 经查询是因为跨域导致的

开启Ubuntu Linux下VirtualBox访问USB功能

解决方法如下: 1.增加用户组usbfs sudo groupadd usbfs 2.查看usbfs用户组的gid cat /etc/group | grep usbfs usbfs:x:1002: 3.把当前用户增加到usbfs组 sudo gedit /etc/group 把 usbfs:x:1002: 修改为 usbfs:x:1002:joson(joson改为自己的用户名) 开启Ubuntu Linux下VirtualBox访问USB功能

如何在Linux下使用Gitblit工具创建Git仓库服务

嗨!朋友,今天我们将学习如何在你的Linux服务器或者PC上安装Gitblit工具.首先,我们看看什么是Git,它的功能以及安装Gitblit的步骤.Git是分布式版本控制系统,它强调速度.数据一致性,并且支持分布式.非线性工作流.它最初由Linus Torvalds在2005年为Linux内核设计和开发,使用GPLv2证书,并从此成为软件开发中使用最广泛的版本控制系统. Gitblit是完全开源的软件,它基于纯粹的Java堆栈,被设计以在Git仓库速度和效率方面胜任从小型到极大型的项目.它很容

Ubuntu Linux下设置IP的配置命令

转自:http://www.2cto.com/os/201306/219381.html 今天装了Ubuntu,但是发现不能上网,开始排查问题: 1.首先确定网络连接是否正确,所用的网线是否可以正常工作 2.查看网卡是否能正常工作,检测的方法如下: a.ping 127.0.0.1 b.ping 静态网关地址 c.ping 主机名(hostname就可以看到主机名) 3.看网卡地址是否配置正确(ifconfig命令看本地主机的网卡信息,和DNS.Default getway.Sever地址进行比

在Ubuntu Linux下制作Windows 启动安装 USB盘

最近想 ,在Ubuntu上刻录个windows的安装U盘,在网上看了些资料,不过好多都说的很模糊,于是乎,我走了不少弯路.这里记录下来,希望了帮到大家. 首先你的有个USB吧,这里我们假定USB在ubuntu中为/dev/sdb 1. 给USB设备 /dev/sdb 分区,注意,要是主分区, sudo fdisk /dev/sdb Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e

Ubuntu Linux 下文件名乱码(无效的编码)的快速解决办法

文件是在WIndows 下创建的,Windows 的文件名中文编码默认为GBK,而Linux中默认文件名编码为UTF8,由于编码 不一致所以导致了文件名乱码的问题,解决这个问题需要对文件名进行转码.文件名转码工具convmv没安装的话 用下面的命令安装: sudo apt-get install convmv 复制代码 convmv 使用方法: convmv -f 源编码 -t 新编码 [选项] 文件名 常用参数: -r 递归处理子文件夹 –notest 真正进行操作,默认情况下是不对文件进行真

Ubuntu linux 下的基本操作

防火墙相关: 关闭防火墙: ufw disable 开启防火墙: ufw enable 更详细的ufw功能用法见:ufw -h 其他linux平台下的一些(但是ubuntu下不好用): 查看防火墙状态: /etc/init.d/iptables status 暂时关闭防火墙: /etc/init.d/iptables stop 禁止防火墙在系统启动时启动 /sbin/chkconfig --level 2345 iptables off 重启iptables /etc/init.d/iptabl