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

Wesley13
• 阅读 1562

版权声明:本文为博主原创文章,未经博主同意不得转载。 https://blog.csdn.net/loveaborn/article/details/24575659

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是没有问题的。例如以下:

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

但使用git clone就不行

 git clone git@github.com: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 = 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

将编译后的文件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 loveaborn@foxmail.com
Port 443
Hostname ssh.github.com

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

以上步骤完毕后。即可了,例如以下截图:

git clone git@github.com:aborn/ulitcs.git   

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

git push

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

注意:

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

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

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

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
java socket实现全双工通信
版权声明:本文为博主原创文章,未经博主同意不得转载。https://blog.csdn.net/hzj9118/article/details/28419651单工、半双工和全双工的定义假设在通信过程的随意时刻,信息仅仅能由一方A传到还有一方B。则称为单工。假设在随意时刻,信息既可由A传到B,又能由B传A。但仅仅能由一个方向上的传输存在
Stella981 Stella981
3年前
Navicat for MySQL 查看BLOB字段内容
转:NavicatforMySQL查看BLOB字段内容版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/L905128009/article/details/75938472Navicatfor MySQL(https://www
Stella981 Stella981
3年前
Mac终端命令远程开启屏幕共享进行远程控制
Mac终端命令远程开启屏幕共享进行远程控制版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/showhilllee/article/details/49306211使用背景我们有几台Mac作为服务器,开启了ssh,之前上线之类的操作都是通过命令来
Stella981 Stella981
3年前
Keras 时序模型
版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/Thinking\_boy1992/article/details/53207177本文翻译自(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fkeras.io%2Fgettingst
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
mysql 执行计划explain详解
版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/u012410733/article/details/66472157explain主要是用来获取一个query的执行计划,描述mysql如何执行查询操作、执行顺序,使用到的索引,以及mysql成功返回结果集需要执行的行数。可以帮助我们分析select语