配置Git的连接方式和代理

安装 Git

Git 官网: https://git-scm.com/downloads

Git 使用 SSH 方式连接 GitHub/Gitee

在本地生成 ssh 证书

  1. 在 Git 的命令行内输入以下命令
1
ssh-keygen -t rsa -C "[email protected]"

回车之后会让你选择证书存放的路径,你可以自己选择路径也可以直接回车使用默认的文件路径,即%USERPROFILE%\.ssh\下。* *自定义文件路径的好处是可以自定义文件名并生成多个本地密钥供自己使用**, 然后会让你输入密码,可不填直接回车两次

  1. 在 GitHub 中设置公钥

%USERPROFILE%\.ssh\文件夹下会生成两个密钥文件,我们只需要复制.pub 结尾的文件内容添加到 GitHub 中即可。此时生成本地密钥的这台电脑就有访问当前 GitHub 账户下所有仓库 pull 和 push 的权限的权限,包括私有仓库(需要谨慎操作)

你也可以单独为一个项目添加,这样拥有该密钥的电脑只有对该项目有 pull 和 push 的权限

需要注意的是拉起代码的时候需要使用 ssh 的方式,包括设置remote的时候

在 Gitee 中的设置也同理。

测试连通性

输入以下命令,回车后输入 yes,看到 succcessfully 即代表成功

1
2
3
4
# GitHub
gssh -T git@github.com
# Gitee
gssh -T git@gitee.com

设置 Git 的代理配置

国内得 Gitee 网速还好,pull push 一般都很快,但是 GitHub 连接就非常不稳定。网上有很多教程,很少有靠谱的,自己尝试了一番总结出来的。

两种方式

  1. http/https
  2. ssh

两种方式得区别

  1. clone: 使用 ssh 方式时,需要配置个人的 ssh key,并将生成的 ssh 公钥配置到 GitHub 中。对于使用 https 方式来讲,就没有这些要求。
  2. push: 在使用 ssh 方式时,是不需要验证用户名和密码,如果你在配置 ssh key 时设置了密码,则需要验证密码。而对于使用 https 方式来讲,每次 push 都需要验证用户名和密码。

个人推荐使用 ssh 方式连接到 GitHub 安全系数会高一些,而且还可以管理多个 GitHub 账户。

设置代理

  1. http/https
1
2
3
4
5
6
7
8
9
10
11
# HTTP 代理
git config --global http.proxy http://127.0.0.1:1080
git config --global https.proxy http://127.0.0.1:1080

# Socks5 代理
git config --global http.proxy socks5://127.0.0.1:1080
git config --global https.proxy socks5://127.0.0.1:1080

# 取消设置
git config --global --unset http.proxy
git config --global --unset https.proxy

注意这里的 socks5 仅仅是代理使用的协议,它依然是针对 http 设置的,所以仅对 http 协议的仓库有效。使用 git@xxx 这种 ssh 连接的不会使用代理。

也可以分域名设置代理:

1
2
git config --global http.https://github.com.proxy http://127.0.0.1:1080
git config --global https.https://github.com.proxy https://127.0.0.1:1080
  1. SSH

SSH 代理需要在密钥目录 (~/.ssh) (Windows 下是 %USERPROFILE%\.ssh) 新建一个 config 文件,没有后缀名。

Windows 环境下的设置:

1
2
 -S 为 socks, -H 为 HTTP
ProxyCommand connect -S 127.0.0.1:1080 %h %p

如果找不到 connect 命令那么指定其绝对路径,一般在 git 安装目录下 \mingw64\bin\connect.exe

也可以分域名代理:

Windows

1
2
Host github.com
ProxyCommand connect -S 127.0.0.1:1080 %h %p

Mac

1
2
Host github.com
ProxyCommand nc -v -x 127.0.0.1:1080 %h %p

所有的前提是你要有一个代理,且看个人手段!