一枚切符

心に灯す竹あかり、なので

  1. 1. 先决条件
  2. 2. http远程库
  3. 3. ssh远程库
    1. 3.1. macOS/Linux
    2. 3.2. Windows

Git的代理设置整理

先决条件

  • 已有代理服务器(http/socks其一)
  • http: http://proxy.address:8080
  • socks: socks5://proxy.address:1080

http远程库

  • 针对git链接是http的情况
  • eg:https://github.com/chen-yixin/tdd_django.git
1
2
3
4
5
6
7
8
9
10
11
# 1. http代理的情况
git config --global http.proxy 'http://proxy.address:8080'
git config --global https.proxy 'http://proxy.address:8080'

# 2. socks代理的情况
git config --global http.proxy 'socks5://proxy.address:1080'
git config --global https.proxy 'socks5://proxy.address:1080'

# 3. 取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy
  • 命令执行完成后,可以在$HOME/.gitconfig文件发现多了2条配置项目
    1
    2
    3
    4
    [http]
    proxy = socks5://proxy.address:1080
    [https]
    proxy = socks5://proxy.address:1080

ssh远程库

  • 针对git链接是ssh的情况
  • eg:git@github.com:chen-yixin/tdd_django.git

macOS/Linux

  • 修改~/.ssh/config,不存在则新建
1
2
3
4
5
6
7
8
9
Host github.com
HostName github.com
User git
# 走 HTTP 代理
ProxyCommand nc -X connect -x roxy.address:8080 %h %p
# 走 socks5 代理(写法1)
ProxyCommand nc -X 5 -x roxy.address:1080 %h %p
# 走 socks5 代理(写法2)
ProxyCommand nc -x roxy.address:1080 %h %p
  • 解释
  1. Host后面接的github.com是指定要走代理的仓库域名。
  2. ProxyCommand中,Linux 和 macOS 用户用的是 nc。
  3. -X选项后面接的是connect的意思是 HTTPS 代理。
    1. 如果-X选项后面接的是数字 5,那么指的就是 socks5 代理。
    2. 当然直接不写上-X选项也是可以的,因为在没有指定协议的情况下,默认是使用socks5代理的。
  4. -x选项后面加上代理地址和端口号。
  5. 在调用ProxyCommand时,%h%p将会被自动替换为目标主机名SSH命令指定的端口
    1. %h%p不要修改,保留原样即可。

Windows

  1. 安装connect
    1. url: connect
  2. 设置%HOMEPATH%\.ssh\config
    1
    2
    3
    4
    5
    6
    Host github.com
    User git
    # 走 HTTP 代理
    ProxyCommand connect -H proxy.address:8080 %h %p
    # 走 socks 代理
    ProxyCommand connect -S proxy.address:1080 %h %p
  • 解释
  1. Host后面接的github.com是指定要走代理的仓库域名。
  2. ProxyCommand中,Windows 用户用的是connect
  3. -H选项的意思是 HTTP 代理。
    1. 单独的-S选项指的就是 socks5 代理
  4. 在调用ProxyCommand时,%h%p将会被自动替换为目标主机名SSH命令指定的端口
    1. %h%p不要修改,保留原样即可。

本文作者 : Chen Yixin
本文使用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议
本文链接 : https://chen-yixin.github.io/2020/07/18/git-proxy/

本文最后更新于 天前,文中所描述的信息可能已发生改变