由于 GitHub 最近又被墙了,导致我在使用时遇到了诸多不便,在网上找了一些办法,彻底解决了 git 代理的问题,使得 https 和 ssh 这两种方式的 git clone 都能够走代理服务。
Git 配置代理
本文介绍了如何配置执行 git clone 命令时的 http/https 代理,以及 ssh 代理。
以下配置过程以 ubuntu 为例,并假设代理地址为 10.0.2.2,端口为 4781 。
https 代理
设置代理:
#使用socks5代理(推荐)
git config --global http.https://github.com.proxy socks5://10.0.2.2:4781
#使用http代理(不推荐)
git config --global http.https://github.com.proxy http://10.0.2.2:4781
取消代理:
git config --global --unset http.proxy git config --global --unset https.proxy
ssh 代理
需要提前在 Github 上设置 ssh 公钥,可参考:在github上添加SSH key
然后安装 connect-proxy 工具,
sudo apt install connect-proxy
打开 ~/.ssh/config 文件,若没有就新建一个,输入下述内容,其中代理地址,端口,ssh 私钥位置需要替换。
ProxyCommand nc -v -x <代理地址:端口,例如 10.0.2.2:4781> %h %p
Host github.com
User git
Port 22
Hostname github.com
IdentityFile "<ssh私钥位置,例如 /home/jackis/.ssh/id_rsa>"
TCPKeepAlive yes
Host ssh.github.com
User git
Port 443
Hostname ssh.github.com
IdentityFile "<ssh私钥位置,例如 /home/jackis/.ssh/id_rsa>"
TCPKeepAlive yes
保存后文件后测试方法如下,返回successful之类的就成功了。
# 测试是否设置成功
ssh -vT git@github.com
VirtualBox 虚拟机如何使用宿主机代理
有时候在 VirtualBox 虚拟机里开发,也需要使用代理访问 Github 等网站,如何利用宿主机的代理呢?
首先配置虚拟机的网络模式为 NAT 或桥接模式,输入 ip route show 命令找到路由节点,一般默认为 10.0.2.2,
jackis@jackis:~$ ip route show
default via 10.0.2.2 dev enp0s3 proto dhcp metric 100
然后查找宿主机的代理端口,查找方式根据代理软件的不同而不同,我就不详说了。我这里 sockets 代理端口为 4781。
之后就可以按照上述教程配置 git 代理了。
参考:
- 设置代理解决github被墙 - 包含 Windows 解决方案
- 虚拟机使用宿主机全局代理