常见的设置代理

你想通过 SSH 访问一个公司内网的主机(例如 ssh iflytek -T),但由于这是内网服务,你必须通过…

SSH设置代理

你想通过 SSH 访问一个公司内网的主机(例如 ssh iflytek -T),但由于这是内网服务,你必须通过一个本地设置好的代理(端口为 10808)进行转发。

以下是你可以采用的方法,取决于你使用的代理类型(HTTP 代理 / SOCKS5 代理)。


SOCKS5 代理

你可以使用 ProxyCommand 来配置 SSH,通过代理进行连接。

方法 1:使用命令行 + ncconnect-proxy 工具

安装必要的工具(任选其一):

  • nc(带 -X 5 支持 SOCKS5,部分版本如 netcat-openbsd 支持)
  • 或者:connect-proxy 工具

然后运行以下命令(以 SOCKS5 为例):

ssh -o "ProxyCommand=nc -x 127.0.0.1:10808 -X 5 %h %p" github -T

或者使用 connect-proxy

ssh -o "ProxyCommand=connect-proxy -S 127.0.0.1:10808 %h %p" github -T

HTTP 代理

可以通过 connect-proxy 工具来实现 HTTP 代理转发:

ssh -o "ProxyCommand=connect-proxy -H 127.0.0.1:10808 %h %p" github -T

修改 ~/.ssh/config

为了不每次都输入复杂参数,你可以修改 SSH 配置文件:

nano ~/.ssh/config

添加以下内容:

Host github
    HostName github.com
    ProxyCommand nc -x 127.0.0.1:10808 -X 5 %h %p
    # 或者(如果是 HTTP 代理):
    # ProxyCommand connect-proxy -H 127.0.0.1:10808 %h %p

然后你只需要执行:

ssh github -T

适用于 Windows。

下面是几个可行且常用的工具推荐:

connect.exe(超轻量 SOCKS5/HTTP 代理转发器,开源,单文件)

如果你已经安装了 Git for Windows,那么实际上你已经拥有 connect.exe,不需要额外下载:

这个 connect.exe 位于 Git 安装目录下,例如:

C:\Program Files\Git\mingw64\bin\connect.exe

Git 自带的 connect.exe 就可以直接用于 ProxyCommand 设置

Host iflytek
    HostName iflytek.company.internal
    ProxyCommand "C:\\Program Files\\Git\\mingw64\\bin\\connect.exe" -S 127.0.0.1:8868 %h %p
如果你的代理是 SOCKS5:
Host github.com
    ProxyCommand C:\Tools\connect.exe -S 127.0.0.1:8868 %h %p
如果你的代理是 HTTP:
Host github.com
    ProxyCommand C:\Tools\connect.exe -H 127.0.0.1:8868 %h %p
Host github.com
  IdentityFile C:\Users\maluyao\.ssh\github
  ProxyCommand "C:/Program Files/Git/mingw64/bin/connect.exe" -S 127.0.0.1:10808 %h %p

Git代理

下面配置根据需要二选一

  • 设置socks5代理
 git config --global http.proxy 'socks5://127.0.0.1:10808' 
 git config --global https.proxy 'socks5://127.0.0.1:10808'
  • 设置http代理
 git config --global http.proxy 'http://127.0.0.1:7890' 
 git config --global https.proxy 'https://127.0.0.1:7890'

查看代理

 git config --global --get http.proxy
 git config --global --get https.proxy

取消代理

 git config --global --unset http.proxy
 git config --global --unset https.proxy

npm设置代理

设置代理

#设置http代理
npm config set proxy http://proxy-server:port
#案例
npm config set proxy http://127.0.0.1:1080
#设置https代理
npm config set https-proxy https://proxy-server:port
#案例
npm config set proxy https://127.0.0.l:l080

删除代理

npm config delete proxy
npm config delete https-proxy

恢复官方 npm 源

npm config set registry https://registry.npmjs.org/

检查配置是否恢复成功

npm config list

shell

对当前 PowerShell 会话生效的代理设置

把端口按你的实际改(常见:SOCKS=10808,HTTP=7890/7891):

# 如果你是 SOCKS5 代理(常见 10808)
$env:HTTP_PROXY="socks5://127.0.0.1:10808"
$env:HTTPS_PROXY="socks5://127.0.0.1:10808"
# 补充一个 对所有协议生效(HTTP、HTTPS、FTP 等),作为兜底
$env:ALL_PROXY="socks5://127.0.0.1:10808"
flutter build apk

临时添加环境变量:

$env:Path = "E:\Tools\nuget;" + $env:Path

常见会读取它的工具

  • flutter(下载 engine / pub / gradle 依赖)
  • git
  • curl
  • wget
  • npm / yarn / pnpm
  • pip
  • gradle

⚠️ 前提:程序本身要支持从环境变量读取代理

CMD

CMD 中的代理设置 (临时生效) 将端口改为你的实际端口(如 10808 或 7890):

设置 HTTP 和 HTTPS 代理

set HTTP_PROXY=socks5://127.0.0.1:10808
set HTTPS_PROXY=socks5://127.0.0.1:10808
set ALL_PROXY=socks5://127.0.0.1:10808

python

一、最通用:用环境变量(推荐,最省事)

✔ 适合:requestspipurllibaiohttphttpx ✔ 和你之前 PowerShell 的做法是 同一套机制

代码里设置(只对当前 Python 进程有效)

import os

os.environ["HTTP_PROXY"] = "http://127.0.0.1:7890"
os.environ["HTTPS_PROXY"] = "http://127.0.0.1:7890"
# 如果是 SOCKS5
# os.environ["HTTP_PROXY"] = "socks5h://127.0.0.1:10808"
# os.environ["HTTPS_PROXY"] = "socks5h://127.0.0.1:10808"

然后 正常发请求即可

import requests
print(requests.get("https://httpbin.org/ip").text)

📌 socks5h://socks5:// 更稳(DNS 也走代理)


二、requests 单独设置代理(最常见)

import requests

proxies = {
    "http": "http://127.0.0.1:7890",
    "https": "http://127.0.0.1:7890",
}

r = requests.get("https://httpbin.org/ip", proxies=proxies, timeout=10)
print(r.text)

SOCKS5(需要额外依赖)

pip install requests[socks]
proxies = {
    "http": "socks5h://127.0.0.1:10808",
    "https": "socks5h://127.0.0.1:10808",
}

三、urllib / 标准库方式

import urllib.request

proxy_handler = urllib.request.ProxyHandler({
    "http": "http://127.0.0.1:7890",
    "https": "http://127.0.0.1:7890",
})

opener = urllib.request.build_opener(proxy_handler)
urllib.request.install_opener(opener)

print(urllib.request.urlopen("https://httpbin.org/ip").read())

四、异步库(aiohttp / httpx)

aiohttp

import aiohttp
import asyncio

async def main():
    async with aiohttp.ClientSession() as session:
        async with session.get(
            "https://httpbin.org/ip",
            proxy="http://127.0.0.1:7890"
        ) as r:
            print(await r.text())

asyncio.run(main())

httpx(强烈推荐,现代)

import httpx

with httpx.Client(proxies="http://127.0.0.1:7890") as client:
    r = client.get("https://httpbin.org/ip")
    print(r.text)

SOCKS5:

pip install httpx[socks]
client = httpx.Client(proxies="socks5h://127.0.0.1:10808")

五、pip 自己怎么走代理?

临时

pip install numpy -i https://pypi.org/simple --proxy http://127.0.0.1:7890

永久(配置文件)

# %APPDATA%\pip\pip.ini  (Windows)
[global]
proxy = http://127.0.0.1:7890

评论

评论加载中……