01

終端機不吃系統代理

系統代理只對遵守系統設定的程式有效。絕大多數命令列工具不讀它,它們看的是 http_proxy 與 https_proxy 環境變數,或自己的設定檔。所以開著系統代理、瀏覽器一切正常,git clone 照樣逾時,這是正常現象,不是用戶端壞了。

有兩個例外要先記住:TUN 模式在網路層接管流量,命令列工具不設定也能走;而 SSH 任何時候都不認 http_proxy,必須用 ProxyCommand。

合作推薦訂閱連結從哪來?本站合作機場註冊即送 1GB 香港高速體驗流量,可直接一鍵匯入。取得高速節點
02

依工具分別設定

  1. 1

    臨時生效:環境變數

    Linux 與 macOS 用 export https_proxy 和 http_proxy 指向 http://127.0.0.1:7897;PowerShell 用 $env:HTTPS_PROXY 給同樣的值。只對目前視窗有效,關掉就沒了。要長期生效請寫進 .bashrc 或 PowerShell 設定檔。

  2. 2

    Git

    git config --global http.proxy 加上代理位址,https 同理。只想讓 GitHub 走代理,用帶網域前綴的寫法:git config --global http.https://github.com/.proxy。取消加 --unset。

  3. 3

    npm 與 pip

    npm config set proxy 設的是代理,registry 是換來源,兩件事別混。pip 用 --proxy 參數臨時指定,或寫進 pip.conf;在台灣裝套件時換來源通常比走代理快。

  4. 4

    SSH

    在 ~/.ssh/config 裡替對應 Host 加一行 ProxyCommand。Linux 與 macOS 常用 nc -X 5 -x 走 SOCKS5,Windows 可以用 Git 附帶的 connect 工具。

03

驗證與常見寫錯的地方

跑一次 curl 存取 ipinfo.io/ip,回傳的位址是節點 IP 就代表生效了。如果 curl 通但 git 不通,用 git config --global --get http.proxy 單獨確認那份設定。

  • https_proxy 的值以 http:// 開頭,不是 https://,那指的是代理伺服器自己的協定
  • 位址結尾不要加斜線,也不要帶路徑
  • 用 no_proxy 排除 localhost、127.0.0.1 與公司內部網域
04

常見問題

設了環境變數還是 connection refused?

依機率排:連接埠寫錯、用戶端沒在執行、寫成了 https:// 開頭。先確認用戶端介面顯示的混合連接埠和你填的一致。

設定代理之後內部網址連不上?

把內部網域與網段加進 no_proxy,例如 localhost、127.0.0.1 以及內部網域後綴。Git 與 npm 也有各自的 noproxy 設定項目。