ubuntu设置 Git 代理(http/git/ssh)

这篇具有很好参考价值的文章主要介绍了ubuntu设置 Git 代理(http/git/ssh)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

转载请标明转载自:https://blog.csdn.net/chenbb8


使用git拉取github之类的网站里的远程仓库的时候,因为网络问题,访问速度不稳定,因此需要特殊设置以达到加速clone和push的效果。
git的远程仓库有三种clone方式,不同的连接方式对应不同的设置方法,设错的话就会导致越过代理直接连接,网上的一些教程往往没有说清楚这里面的差别,如下列出几个典型的网址和分类

#http协议
git clone https://github.com/chenbb8/efsm.git
#git协议   (github不支持git://格式,所以这里展示openwrt.org的git协议远程仓库)
git clone git://git.openwrt.org/openwrt/openwrt.git
#ssh协议
git clone git@github.com:chenbb8/efsm.git

注1:对于已经clone下来的本地仓库,可以使用git remote -v查看远程仓库的地址。
注2:另外还有一种方法是在需要加速的命令前加proxychains,不需要繁琐的设置,具体自行百度,这里就不展开了。

为http协议远程仓库设置代理


http协议远程仓库的代理设置比较简单,只需要执行下面的代码(经测试,无需像别的教程那样,分别设置http.proxy和https.proxy)

#如果使用的是http代理 
git config --global http.proxy http://代理地址:代理端口
#如果使用的是socks5代理
git config --global http.proxy socks5://代理地址:代理端口

以上设置产生的是全局代理,也可以针对域名设置代理,以github.com为例:

#如果使用的是http代理 
git config --global http.https://github.com.proxy http://代理地址:代理端口
#如果使用的是socks5代理
git config --global http.https://github.com.proxy socks5://代理地址:代理端口
相关设置可以在~/.gitconfig文件中观察到,可以参考当前设置前后的格式,
直接在~/.gitconfig文件中,增加或者删除对应的配置。后面的取消代理脚本用的就是直接修改~/.gitconfig的方法。

取消http协议远程仓库代理


执行如下代码

git config --global --unset http.proxy

如果是针对域名设置代理,以github.com为例,则执行

git config --global --unset http.https://github.com.proxy

为git协议远程仓库设置代理


github不支持git://格式,所以这次展示openwrt.org的git协议远程仓库:
设置git协议的代理,需要安装connect-proxy

sudo apt-get update
sudo apt-get install connect-proxy

然后在桌面上新建文件gitproxy.sh
在里面输入:

#!/bin/bash
#-S 为 socks, -H 为 HTTP
connect -S 代理地址:代理端口 $@

接着给文件增加执行属性,并它拷贝到用户路径中,以便可以被git调用

chmod +x gitproxy.sh
sudo cp gitproxy.sh /usr/bin/

接着将gitproxy.sh关联到git中:

git config --global core.gitproxy gitproxy.sh

以上设置产生的是全局代理,也可以针对域名设置代理,以openwrt.org为例,则执行

git config --global --add core.gitproxy 'gitproxy.sh for openwrt.org'
相关设置可以在~/.gitconfig文件中观察到,可以参考当前设置前后的格式,
直接在~/.gitconfig文件中,增加或者删除对应的配置。后面的取消代理脚本用的就是直接修改~/.gitconfig的方法。

取消git协议远程仓库代理


执行如下代码

git config --global --unset core.gitproxy

为ssh协议远程仓库设置代理


设置ssh协议的代理,需要安装connect-proxy,参考前面章节。
访问ssh协议远程仓库,相关代理并不通过git来设置,而是设置本地ssh的相关文件
首先在~/.ssh/路径下创建名为config的空文件,然后粘贴下面的内容进去:

Host github.com
#-S 为 socks, -H 为 HTTP
ProxyCommand connect -S 代理地址:代理端口 %h %p

以上设置产生的是全局代理,也可以针对域名设置代理,以github.com为例,则执行

Host github.com
#-S 为 socks, -H 为 HTTP
ProxyCommand connect -S 代理地址:代理端口 %h %p
因为本人电脑中的connect程序连接socks5代理的时候,每次都要提示输入密码,
因此后面的设置代理脚本,通过gitproxyssh.sh自动为代理输入密码。

取消ssh协议远程仓库代理


执行如下代码

git config --global --unset core.gitproxy

注:如果针对多个域名设置代理,可能会报错:warning: core.gitproxy has multiple values
可以通过以下指令直接删除地址,来达成目的:

sed -i '/\[core]/d' ~/.gitconfig
sed -i '/gitproxy =/d' ~/.gitconfig
设置和取消代理的脚本(socks5)

设置代理脚本如下所示,用户需要修改的是:代表代理IP地址的VPN_IP和代表代理端口的VPN_PORT,还有代表需要加速的远程仓库地址数组GIT_ADDR,如果代理设置了密码,那么还要修改变量VPN_POSSWORD的值。

#!/bin/bash
VPN_IP=192.168.0.123
VPN_PORT=2022
VPN=${VPN_IP}:${VPN_PORT}
#代理的连接密码,默认是空密码
VPN_POSSWORD=
GIT_ADDR=(
#一行一个地址
github.com
openwrt.org
)

#设置HTTP代理
for addr in ${GIT_ADDR[@]}; do
#	echo http-- $addr
	git config --global http.https://$addr.proxy socks5://${VPN}
done


#设置GIT代理
if [ ! -e /usr/bin/gitproxy.sh ] ; then
	echo 666
	touch /tmp/gitproxy.sh
	chmod a+x /tmp/gitproxy.sh
	sudo cp /tmp/gitproxy.sh /usr/bin/
fi
#编写脚本/usr/bin/gitproxy.sh
echo "#!/bin/sh" | sudo tee /usr/bin/gitproxy.sh
#设置代理的密码,以免每次都要输入代理的密码(可选)
echo "export SOCKS5_PASSWORD=${VPN_POSSWORD}" | sudo tee -a /usr/bin/gitproxy.sh
echo "connect -S $VPN \$@" | sudo tee -a /usr/bin/gitproxy.sh

#git config --global core.gitproxy gitproxy.sh
#git config --global --unset core.gitproxy这个指令在core.gitporxy下有多个值的时候会失效,因此直接操作~/.gitconfig
sed -i '/gitproxy =/d' ~/.gitconfig
for addr in ${GIT_ADDR[@]}; do
#	echo core-- $addr
	git config --global --add core.gitproxy "gitproxy.sh for $addr"
done


#设置SSH代理
rm -f ~/.ssh/config
touch ~/.ssh/config
for addr in ${GIT_ADDR[@]}; do
	echo ssh-- $addr
	echo Host $addr >> ~/.ssh/config
	echo "ProxyCommand gitproxyssh.sh -S $VPN  %h %p" >> ~/.ssh/config
done
#编写脚本/usr/bin/gitproxyssh.sh
if [ ! -e /usr/bin/gitproxyssh.sh ] ; then
        echo 888
        touch /tmp/gitproxyssh.sh
        chmod a+x /tmp/gitproxyssh.sh
        sudo cp /tmp/gitproxyssh.sh /usr/bin/
fi
echo "#!/bin/sh" | sudo tee /usr/bin/gitproxyssh.sh
#设置代理的密码,以免每次都要输入代理的密码(可选)
echo "export SOCKS5_PASSWORD=${VPN_POSSWORD}" | sudo tee -a /usr/bin/gitproxyssh.sh
echo "connect \$@" | sudo tee -a /usr/bin/gitproxyssh.sh

#打印git的设置信息
git config -l

取消代理

#!/bin/bash

[ -e /usr/bin/gitproxy.sh ] && sudo rm /usr/bin/gitproxy.sh
[ -e /usr/bin/gitproxyssh.sh ] && sudo rm /usr/bin/gitproxyssh.sh
[ -e ~/.ssh/config ] && sudo rm ~/.ssh/config

#git config --global --unset http.proxy
#git config --global --unset core.gitproxy

#删除~/.gitconfig中的[xxx]项,--unset只会删除值不会删除项
#并且暂时没找到git的--unset命令匹配全部仓库地址的办法
sed -i '/\[http/,+1d' ~/.gitconfig
sed -i '/\[core\]/d' ~/.gitconfig
sed -i '/gitproxy =/d' ~/.gitconfig


#打印git的设置信息
git config -l --global

参考
https://git-scm.com/docs/git-config
https://zhuanlan.zhihu.com/p/481574024
https://blog.csdn.net/dx4640396/article/details/121808602文章来源地址https://www.toymoban.com/news/detail-822797.html

到了这里,关于ubuntu设置 Git 代理(http/git/ssh)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • git 设置代理和取消代理

    (一)设置代理 (1)命令方式设置http代理:git config --global http.proxy  xxxx (2)命令方式设置https代理:git config --global https.proxy  xxxx (3)命令方式设置core代理:git config --global core.gitproxy  xxxx (4)配置文件方式设置代理:找到.gitconfig文件,添加如下内容: (二)取消代理 (1)命令方式

    2024年02月12日
    浏览(35)
  • git从http切换到ssh

    之前项目代码git clone的http的git地址,后来禁用了http协议,只能用ssh协议。 进入Git Bash Here, 执行以下命令 一直Enter直到完成。 生成的公钥位于C:Users用户名.ssh目录下。 打开id_rsa.pub文件复制其内容,拷贝到gitlab或者别的使用的工具的添加公钥里面。 注意: 我本地和远程用的

    2024年02月08日
    浏览(30)
  • git切换ssh与Http协议

            公司gitLab仓库迁移,之前本地idea配置的是通过ssh协议进行代码提交和拉取,迁移后的gitLab服务被设置了只支持Http协议进行代码提交和更新。所以需要更改本地代码提交方式。 1、查看当前remote 2、切换到http协议 查看更新后状态 如果是http协议切换到ssh协议同理,配置

    2024年02月11日
    浏览(32)
  • 设置CMD代理及GIT代理方法

    在 cmd 环境下设置代理可能不是很常用,但是某些情况下还是可能会用到,比如使用node的npm或者conda配置环境时等等 设置CMD代理模式,只在当前窗口临时有效,不属于系统变量,窗口关闭后就会失效 win+R快捷键,并输入CMD,打开cmd,输入以下指令即可: set http_proxy=http://127.0.0.

    2023年04月18日
    浏览(29)
  • git通过ssh代理连接github(gitee不支持),并更改端口

    需求 git clone github/gitee远程仓库,使用ssh协议,并且走本地的http代理(端口3128)。 运行环境是Ubuntu 20.04。 github使用ssh代理的方案 修改 ~/.ssh/config 文件: Hostname ssh.github.com 和 ProxyCommand nc -X connect -x 127.0.0.1:3128 %h %p 定义对服务器 github.com 的 ssh 调用应该重新路由到端口 3128 上的代

    2024年02月17日
    浏览(44)
  • Git设置SSH Key

    (1)打开 git 命令窗口 (2)配置用户名(填自己的姓名)           git config --global user.name “xinyu.xia” (3)配置用户邮箱(填自己的邮箱)           git config --global user.email “xinyu.xia@xxx.com” (4)生成公钥、秘钥(填自己的邮箱,执行后需要按几次 enter 直到结束)  

    2024年02月13日
    浏览(45)
  • Ubuntu git SSH密钥添加

    本文介绍Ubuntu git SSH密钥添加方法。 1.生成密钥的命令 密钥是Ubuntu和github或者gitee的联系的纽带,用于验证。 ssh-keygen -C “10xxxxxxxx@qq.com” -t rsa 格式:ssh-keygen -C “git或者gitee账户绑定的邮箱” -t rsa 2.查看密钥 密钥在~/.ssh目录下的id_rsa.pub文件中, cat ~/.ssh/id_rsa.pub 3.往git仓库

    2024年02月13日
    浏览(89)
  • git设置代理&多账号

    不建议 设置全局代理, 多环境下可能混乱 注意使用协议,能使用 ssh协议 尽量使用 ssh协议 方式 具体的代理ip和端口视情况调整,以下用端口 1080 示例 1、使用命令直接设置代理 --global 表示全局,不需要可以不加 例子: 2、直接修改 ~/.gitconfig 文件 修改ssh配置文件 ~/.ssh/confi

    2024年02月11日
    浏览(42)
  • git设置代理

    打开 Git Bash,使用命令 临时设定 socks代理: 或者http代理: 若想要设置代理永久生效,则可以把它写入 .gitconfig 文件中。 使用 vi 打开 .gitconfig 文件: 写入下列配置(建议在最末写入): 修改后重启 git ,使配置生效: 查看当前代理: 可以看到自己所配置的端口信息,则说明

    2024年02月11日
    浏览(32)
  • 【实用技能】git代理设置

    最近运行git pull和push的时候,发现有时候会不能运行,问了广宇后才知道原来Git是要专门设置代理才能正常用的,否则即使开了clash,git用的也是境内网。代理设置方式如下: 因为是global,所以在本地主机的所有workspace都会生效。另外,这个命令是永久性的,不会随着开关机

    2024年02月08日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包