命令列工具預設不讀 Windows 的系統代理設定,這是「瀏覽器能上、終端不能上」的根本原因。本文給出讓各類 CLI 工具走 Clash 的標準做法——它們也是排查代理問題的利器。
curl:最快的鏈路驗證工具
# 不走代理,看本地出口
curl https://api.ip.sb/ip
# 顯式走 Clash,看節點出口
curl -x http://127.0.0.1:7890 https://api.ip.sb/ip
# SOCKS5 方式(7890 混合兩者都支援)
curl --socks5 127.0.0.1:7890 https://api.ip.sb/ip
兩次返回的 IP 不同,說明代理鏈路通暢。-v 引數可以看到詳細握手過程,定位失敗環節。
環境變數:一次生效目前會話
絕大多數 CLI 工具(curl、wget、pip、go 等)遵守 http_proxy/https_proxy 環境變數:
# PowerShell
$env:http_proxy = "http://127.0.0.1:7890"
$env:https_proxy = "http://127.0.0.1:7890"
# CMD
set http_proxy=http://127.0.0.1:7890
set https_proxy=http://127.0.0.1:7890
只對目前終端視窗有效,關閉即失效——這通常正是你想要的。想永久生效可寫入系統環境變數,但不建議(容易忘記,Clash 沒開時所有終端斷網)。
常用工具的專屬設定
# Git
git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy http://127.0.0.1:7890
# 取消:
git config --global --unset http.proxy
# npm
npm config set proxy http://127.0.0.1:7890
npm config set https-proxy http://127.0.0.1:7890
# SSH over 代理([email protected] 場景,寫入 ~/.ssh/config)
Host github.com
ProxyCommand connect -S 127.0.0.1:7890 %h %p
提示:嫌逐個設定麻煩,直接開 TUN 模式——網路層接管後所有命令列工具自動走代理,無需任何環境變數。環境變數方案的優勢是精確可控、不需要管理員許可權。