本仓库中的 Bash 脚本用于配置 WSL2 环境,以便让 http、https 连接和 git 客户端能够正确访问 Windows 下的代理服务器。
WSL2 目前不能够直接通过localhost
访问本地的 Windows 网络服务。相反,Windows 会为 WSL2 分配一个动态 IP,
而 WSL2 下的程序则必须用这个动态 IP 访问 Windows 中监听的端口。
更烦人的是,这个 IP 每次重启电脑都会变。
所以我写了这些脚本,让 WSL2 在启动时可以自动获取 Windows IP(或手动执行),并将 IP 和代理服务器端口应用到:
http_proxy
环境变量https_proxy
环境变量.gitconfig
里的http.proxy
.gitconfig
里的https.proxy
.gitconfig
里的core.gitproxy
- 一个名为
socksproxy
的用于进行 SSH 代理的辅助脚本。其实就是包装了一下nc
命令的调用。
一旦微软解决了这个问题,这些脚本应该就没用了。
执行下面的命令来安装最新脚本:
# 中文版
wget -O w2p.sh -q https://git.io/JJvfD && sudo bash w2p.sh install
# 英文版
wget -O w2p.sh -q https://git.io/JJvf1 && sudo bash w2p.sh install
你可以手动克隆并安装脚本:
$ git clone https://github.com/wizcas/wsl2proxy.git
$ cd wsl2proxy
# 中文版
$ sudo bash ./wsl2proxy-zh install
# 英文版
$ sudo bash ./wsl2proxy-en install
在激活 WSL2Proxy 之前,必须首先进行代理服务器的相关设置,包括:
- 代理协议
- 代理端口
你不用设置代理服务器的 IP 地址,因为 WSL2Proxy 会自动获取!
执行下面的命令进行代理服务器的设置:
$ wsl2proxy setup
代理服务器设置被保存在
~/.wsl2proxy.conf
。
执行下面的命令 (别漏了命令开头的.
,否则环境变量不会应用到当前的环境中):
. wsl2proxy on
执行下面的命令 (别漏了命令开头的.
,否则环境变量不会应用到当前的环境中):
. wsl2proxy off
在你的 Shell 启动脚本中 (.bashrc
, .zshrc
等) 添加这行代码:
. wsl2proxy on
脚本会在 home 目录下自动生成一个名为socksproxy
的辅助可执行脚本,用来快速设置 SSH 代理。
比如说我想让所有访问github.com
的 SSH 连接都通过代理(在使用[email protected]:...
这样的地址克隆仓库时走代理了),
只需要编辑~/.ssh/config
文件并添加下面的配置:
Host github.com
User git
ProxyCommand ~/socksproxy '%h %p'
注意 本脚本不负责自动修改你的.ssh/config
文件,所以你必须自己正确处理该文件的权限。另外,如果让 SSH
走代理了,你也需要手动移除config
文件中的相关配置。
- 如果设置了随 WSL2 自动启用代理,请删除 Shell 启动脚本中的
. wsl2proxy on
这行。 - 如果修改了
~/.ssh/config
文件,请删除其中相关的代理配置。 - 删除文件
/usr/local/bin/wsl2proxy
。