三种 git 协议的代理配置方法
环境:WSL2(Ubuntu-20.04.4 LTS),Proxy 运行在 windows 的 12345 端口,打开允许来自局域网的连接。
获取windows的ip
WSL2 把 windows 的虚拟网卡 vEthernet 作为默认网关,所以代理地址是 $(ip route | grep default | awk '{print $3}'):12345。
配置 git 代理
https://
适用于形如 git clone https://path/to/repository.git 的命令:
1 | |
git@
形如 git clone git@github.com:path/to/repository.git 的命令,本质上用了 ssh 和服务器通信,所以要配置 ssh 代理。配置文件在 ~/.ssh/config:
1 | |
其中 ProxyCommand 这一项就是关于 ssh 代理的配置。connect -H <hostip>:12345 %h %p 是 ssh 连接时执行的命令。
connect 可能需要通过
apt install connect-proxy安装。-H指明通过 http 协议进行连接,<hostip>需要改成 vEthernet 的 ip,%h %p是 ssh 命令自己传入的参数,即服务器的 hostname 和 port。
上面的命令唯一需要自己改写的地方就是 <hostip> ,可以在 ~/.bashrc 中自动替换。
git://
形如 git clone git://path/to/repository 的命令配置代理较为特殊。
首先要写一个执行代理命令的脚本,比如叫 gitproxy.sh:
1 | |
用 chmod +x gitproxy.sh 添加执行权限。然后配置:
1 | |
“$@” 在 sh 中表示脚本被执行时传入的全部参数,在这里的作用等同于 ssh 配置命令中的
%h %p。
至此,三种协议的 git 代理配置都已经列举完毕。