为 git clone github 设置 HTTP 和 SSH 代理

在国内执行 git clone https://github.com/golang/go.git 操作,又慢又不稳定,搜索后发现可以使用代理这个问题。

准备工作

首先,你需要准备好代理工具,一般的代理工具都有 Sock5HTTP 两种代理方式。

常见的代理软件使用的端口有:7890, 1080,下文的 {port} 参数都需要修改为对应的端口号。

笔者会按照 Windows 和 类 Unix 系统介绍为 git 设置代理的方法,由于相似处很多,请按需查看。

Windows

HTTP 协议设置代理

在 GitHub上,通过第一种方式克隆仓库,这里走的就是 HTTP 协议,修改起来也很简单:

命令行设置

  1. 通过代理软件 HTTP 的端口 在终端中执行以下命令:
# {port} 修改为代理软件的端口
git config --global https.https://github.com.proxy https://127.0.0.1:{port}
  1. 通过代理软件 Sock5 的端口 在终端中执行以下命令:
# {port} 修改为代理软件的端口
git config --global https.https://github.com.proxy socks5://127.0.0.1:{port}

可以发现,两者的命令极其相似,格式都为:

git config --global https.https://github.com.proxy {protocol}://{ip}:{port}

所以,凭个人喜好使用就好。

另外,如果代理软件并不在本地运行,那么就将 127.0.0.1 修改为代理软件服务器的 ip(需要有访问权限)。

修改 .gitconfig 文件

如果不喜欢在命令行中操作,也可以直接修改 C:/Users/${your username}/.gitconfig 文件,在文件末尾添加以下内容:

  1. 通过代理软件 HTTP 的端口
[https "https://github.com"]
  # {port} 修改为代理软件的端口
	proxy = https://127.0.0.1:{port}
  1. 通过代理软件 Sock5 的端口
[http "https://github.com"]
  # {port} 修改为代理软件的端口
	proxy = socks5://127.0.0.1:{port}

取消代理

通过命令行:

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

也可以修改 C:/Users/${your username}/.gitconfig 文件,删除或注释 [https "https://github.com"] 区域的内容。

SSH 协议设置代理

在 GitHub上,通过第二种方式克隆仓库,走的就是 SSH 协议:

修改 .ssh/config 文件

找到 ~/.ssh 目录下的 config 文件(如果没有找到这个文件,那么新建即可)。

  1. 通过代理软件 HTTP 的端口 config 文件末尾添加以下内容:
Host github.com
  Hostname ssh.github.com
  # git 在 window 下使用的代理软件为 connect
  # -H为HTTP协议, -S指Socks 5协议
  # {port} 修改为代理软件的端口
  ProxyCommand connect -H 127.0.0.1:{port} %h %p

  # 服务对应端口
  Port 443 
  1. 通过代理软件 Sock5 的端口 config 文件末尾添加以下内容:
Host github.com
  Hostname ssh.github.com
  # git 在 window 下使用的代理软件为 connect
  # -H为HTTP协议, -S指Socks 5协议
  # {port} 修改为代理软件的端口
  ProxyCommand connect -S 127.0.0.1:{port} %h %p

  # 服务对应端口
  Port 443 

验证

先打开 git bash ,然后执行:

ssh -T git@github.com`

结果类似:

$ ssh -T git@github.com
Hi niluan304! You've successfully authenticated, but GitHub does not provide shell access.

Unix 系统

HTTP 协议设置代理

在 GitHub上,通过第一种方式克隆仓库,这里走的就是 HTTP 协议,修改起来也很简单:

命令行设置

  1. 通过代理软件 HTTP 的端口 在终端中执行以下命令:
# {port} 修改为代理软件的端口
git config --global https.https://github.com.proxy https://127.0.0.1:{port}
  1. 通过代理软件 Sock5 的端口 在终端中执行以下命令:
# {port} 修改为代理软件的端口
git config --global https.https://github.com.proxy socks5://127.0.0.1:{port}

可以发现,两者的命令极其相似,格式都为:

git config --global https.https://github.com.proxy {protocol}://{ip}:{port}

所以,凭个人喜好使用就好。

另外,如果代理软件并不在本地运行,那么就将 127.0.0.1 修改为代理软件服务器的 ip(需要有访问权限)。

修改 .gitconfig 文件

如果不喜欢在命令行中操作,也可以直接修改 ~/.gitconfig 文件,在文件末尾添加以下内容:

  1. 通过代理软件 HTTP 的端口
[https "https://github.com"]
  # {port} 修改为代理软件的端口
	proxy = https://127.0.0.1:{port}
  1. 通过代理软件 Sock5 的端口
[http "https://github.com"]
  # {port} 修改为代理软件的端口
	proxy = socks5://127.0.0.1:{port}

取消代理

通过命令行:

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

也可以修改 ~/.gitconfig 文件,删除或注释 [https "https://github.com"] 区域的内容。

SSH 协议设置代理

在 GitHub上,通过第二种方式克隆仓库,走的就是 SSH 协议:

修改 .ssh/config 文件

找到 ~/.ssh 目录下的 config 文件(如果没有找到这个文件,那么新建即可)。

  1. 通过代理软件 HTTP 的端口 config 文件末尾添加以下内容:
Host github.com
    Hostname ssh.github.com

    # git 在 Linux 和 Mac 下使用的代理软件为 netcat,简称nc。
    # -X 5 指代理协议Socks 5, -X 4 指代理协议Socks 4, -X connect指代理协议Socks HTTP
    ProxyCommand nc -v -X 127.0.0.1:xxxx %h %p 

    # 服务对应端口
    Port 443
  1. 通过代理软件 Sock5 的端口 config 文件末尾添加以下内容:
Host github.com
    Hostname ssh.github.com

    # git 在 Linux 和 Mac 下使用的代理软件为 netcat,简称nc。
    # -X 5 指代理协议Socks 5, -X 4 指代理协议Socks 4, -X connect指代理协议Socks HTTP
    ProxyCommand nc -v -X 5 127.0.0.1:xxxx %h %p 

    # 服务对应端口
    Port 443

验证

先打开 git bash ,然后执行:

ssh -T git@github.com

结果类似:

$ ssh -T git@github.com
Hi niluan304! You've successfully authenticated, but GitHub does not provide shell access.

如果遇到错误,可以删除 .ssh 目录中 known_hosts 文件后重试。

Licensed under CC BY-NC-SA 4.0
发表了8篇文章 · 总计7.29k字