如果你希望在 境內(nèi)機(jī)器 上運(yùn)行 git 命令時,通過 境外服務(wù)器 A 作為代理訪問外網(wǎng),那么 proxychains 應(yīng)該安裝在 境內(nèi)機(jī)器 上。下面我將詳細(xì)說明如何實(shí)現(xiàn)這一目標(biāo)。
實(shí)現(xiàn)步驟
1. 確保境外服務(wù)器 A 上有 SOCKS5 代理服務(wù)
你需要確保境外服務(wù)器 A 上運(yùn)行了一個 SOCKS5 代理服務(wù)。如果沒有,可以使用以下方法之一:
方法 1:通過 SSH 創(chuàng)建 SOCKS5 代理
你可以直接通過 SSH 在境內(nèi)機(jī)器上連接到境外服務(wù)器 A,并啟用 SOCKS5 代理功能:
在境內(nèi)機(jī)器上運(yùn)行以下命令:
ssh -N -D 7890 user@境外服務(wù)器A的IP
-
-N:表示不執(zhí)行遠(yuǎn)程命令,僅建立連接。 -
-D 7890:表示在本地創(chuàng)建一個 SOCKS5 代理,監(jiān)聽端口為7890。 -
user:是你在境外服務(wù)器 A 上的用戶名。 -
境外服務(wù)器A的IP:是境外服務(wù)器 A 的 IP 地址。
運(yùn)行此命令后,境內(nèi)機(jī)器的 127.0.0.1:7890 就會成為一個 SOCKS5 代理,流量會通過境外服務(wù)器 A 轉(zhuǎn)發(fā)。
2. 在境內(nèi)機(jī)器上安裝 proxychains
由于你需要在 境內(nèi)機(jī)器 上運(yùn)行 git 命令并通過 SOCKS5 代理訪問外網(wǎng),所以 proxychains 應(yīng)安裝在 境內(nèi)機(jī)器 上。
安裝 proxychains
在境內(nèi)機(jī)器上運(yùn)行以下命令安裝 proxychains:
sudo apt update
sudo apt install proxychains
如果你使用的是 CentOS 或 RHEL,可以運(yùn)行:
sudo yum install proxychains
3. 配置 proxychains
安裝完成后,編輯 proxychains 的配置文件,通常位于 /etc/proxychains.conf。
運(yùn)行以下命令打開配置文件:
sudo nano /etc/proxychains.conf
找到類似以下的部分:
# The option below identifies how the ProxyList is treated.
# only one option should be uncommented at time,
# otherwise the behavior is undefined.
#
# dynamic_chain
#strict_chain
# random_chain
將 dynamic_chain 取消注釋(推薦),并注釋掉其他選項(xiàng):
dynamic_chain
#strict_chain
#random_chain
然后在文件的末尾,添加你的 SOCKS5 代理地址和端口:
socks5 127.0.0.1 7890
-
127.0.0.1:表示代理運(yùn)行在本地(因?yàn)槲覀兺ㄟ^ SSH 創(chuàng)建了 SOCKS5 代理)。 -
7890:是 SOCKS5 代理的監(jiān)聽端口。
保存并退出(在 nano 中按 Ctrl+O 保存,按 Ctrl+X 退出)。
4. 使用 proxychains 運(yùn)行 git 命令
現(xiàn)在你可以通過 proxychains 運(yùn)行 git 命令,讓它的流量通過 SOCKS5 代理轉(zhuǎn)發(fā)到境外服務(wù)器 A。
例如:
proxychains git clone https://github.com/user/repo.git
proxychains 會攔截 git 的網(wǎng)絡(luò)請求,并將流量通過 SOCKS5 代理轉(zhuǎn)發(fā)到境外服務(wù)器 A。
5. 驗(yàn)證代理是否生效
可以通過 curl 測試代理是否生效:
proxychains curl https://www.google.com
如果返回了 Google 的頁面內(nèi)容,說明代理配置成功。
補(bǔ)充說明
-
保持 SSH 連接活躍
如果你通過 SSH 創(chuàng)建了 SOCKS5 代理(ssh -N -D),需要保持這個 SSH 會話一直運(yùn)行。你可以使用tmux或screen來保持會話后臺運(yùn)行。例如,使用
tmux:tmux ssh -N -D 7890 user@境外服務(wù)器A的IP然后按
Ctrl+B,再按D,可以將會話放到后臺運(yùn)行。 -
Git 使用 SSH 協(xié)議時的特殊配置
如果你使用的是 Git 的 SSH 協(xié)議(例如git@github.com:user/repo.git),需要額外配置 SSH 的代理。編輯
~/.ssh/config文件,添加以下內(nèi)容:Host github.com ProxyCommand nc -x 127.0.0.1:7890 %h %p這樣,Git 的 SSH 連接也會通過 SOCKS5 代理。
總結(jié)
-
境外服務(wù)器 A 上無需安裝
proxychains,只需要提供 SOCKS5 代理服務(wù)(可以通過 SSH 創(chuàng)建)。 -
境內(nèi)機(jī)器 需要安裝并配置
proxychains,以便將git或其他命令的流量通過 SOCKS5 代理轉(zhuǎn)發(fā)到境外服務(wù)器 A。 - 通過
proxychains,你可以輕松代理所有命令行工具的網(wǎng)絡(luò)請求。
如果你還有其他問題,歡迎隨時提問!