2025 年 Linux 终端代理设置教程(export + proxychains + apt)
2025 年 Linux 终端代理设置完整教程。覆盖 export 临时代理、proxychains 强制代理、apt/git/curl 等工具代理配置。
适用场景
2025 年 Linux 在服务器和开发环境中的使用越来越广泛。在 Linux 上配置代理的需求主要来自:在服务器上通过代理进行数据采集任务、在开发环境中配置代理访问外部 API、在企业内网中通过代理连接外部网络资源。
温馨提示: Linux 的代理配置方式比较灵活,支持环境变量、工具级配置、全局代理等多种方式。本文将介绍最常用的几种。
准备工作
开始设置前,请确认以下代理信息已经准备就绪:代理服务器地址、端口号、认证信息(如果需要)和代理类型。
方式一:环境变量代理(最常用)
环境变量代理是最简单、最常用的 Linux 代理配置方式。它通过设置环境变量来告诉命令行工具使用代理。
临时设置(当前终端会话有效):
export http_proxy=http://proxy.16yun.cn:8888
export https_proxy=http://proxy.16yun.cn:8888
export HTTP_PROXY=http://proxy.16yun.cn:8888
export HTTPS_PROXY=http://proxy.16yun.cn:8888
export no_proxy=localhost,127.0.0.1,::1在终端中执行以上命令后,当前会话中的 curl、wget 等命令会自动使用代理。
永久设置(推荐):
将以上 export 命令添加到 shell 配置文件中(~/.bashrc 或 ~/.zshrc),然后执行 source ~/.bashrc 使配置生效。这样每次打开终端时都会自动设置代理。
方式二:proxychains 强制代理
proxychains 是一个强大的代理工具,它可以将任何命令行程序的网络请求强制通过代理转发。即使程序本身不支持代理设置,proxychains 也能让它走代理。
安装:
# Ubuntu/Debian
sudo apt install proxychains4
# CentOS/RHEL
sudo yum install proxychains-ng配置:
编辑 /etc/proxychains4.conf 文件:
# 注释掉默认配置,添加您的代理
[ProxyList]
http proxy.16yun.cn 8888
# 或者 SOCKS5
# socks5 proxy.16yun.cn 1080使用:
proxychains4 curl https://httpbin.org/ip
proxychains4 wget https://example.com
proxychains4 python3 my_script.py # 任何程序都可以方式三:各工具独立代理配置
apt 包管理器代理:
# 临时使用
sudo apt -o Acquire::http::Proxy=http://proxy.16yun.cn:8888 update
# 永久配置(创建配置文件)
echo 'Acquire::http::Proxy "http://proxy.16yun.cn:8888";' | sudo tee /etc/apt/apt.conf.d/proxy.confGit 代理:
git config --global http.proxy http://proxy.16yun.cn:8888
git config --global https.proxy http://proxy.16yun.cn:8888Docker 代理:
mkdir -p ~/.docker
cat > ~/.docker/config.json <<EOF
{
"proxies": {
"default": {
"httpProxy": "http://proxy.16yun.cn:8888",
"httpsProxy": "http://proxy.16yun.cn:8888",
"noProxy": "localhost,127.0.0.1"
}
}
}
EOF常见问题
问题 1:export 后某些程序仍不走代理
部分程序只读取小写的 http_proxy 环境变量,部分只读取大写的 HTTP_PROXY。建议同时设置大小写两种格式以确保兼容性。
问题 2:proxychains 无法正常工作
确保 proxychains4.conf 中的代理地址和端口正确。有些系统上需要将 proxy_dns 设置为 off 来解决 DNS 相关的问题。
问题 3:apt 更新时很慢或报错
确认 apt 代理配置文件中的地址和端口正确。如果代理需要认证,可以在地址中包含用户名密码:http://user:pass@proxy.16yun.cn:8888。
更多参考
- Windows 系统代理设置教程
- macOS 代理设置教程
- HTTP 代理与 SOCKS5 代理的区别与选择
各发行版的差异
不同 Linux 发行版的包管理器代理配置方式略有不同:
- Ubuntu/Debian:apt 代理通过 /etc/apt/apt.conf.d/ 配置文件
- CentOS/RHEL:yum 代理通过 /etc/yum.conf 设置
- Arch Linux:pacman 代理通过 /etc/pacman.conf 设置
但核心的 export 环境变量方式在所有发行版上都通用。
安全注意事项
- 不要在 export 命令中明文保存密码
- 建议将代理配置写入 .bashrc 并限制文件权限
- 使用 sudo 执行命令时,用 sudo -E 保留代理环境变量
总结
Linux 代理配置方式灵活。export 环境变量最常用,proxychains 适合强制代理场景,工具级配置适合为特定工具设置。
按场景选择配置方式
临时测试:使用 export 命令设置临时代理,用完关闭终端即可。
长期开发环境:在 ~/.bashrc 或 ~/.zshrc 中配置 export 命令,然后执行 source。
需要强制代理:使用 proxychains,在命令前加上 proxychains4 即可。
系统服务代理:在 /etc/environment 或系统 service 文件中配置。
Docker 代理配置
Docker 守护进程不会自动继承终端中的 export 代理设置,需要在 Docker 配置中单独设置:
# 创建 Docker 配置目录
mkdir -p ~/.docker
# 写入代理配置
cat > ~/.docker/config.json << EOF
{
"proxies": {
"default": {
"httpProxy": "http://proxy.16yun.cn:8888",
"httpsProxy": "http://proxy.16yun.cn:8888",
"noProxy": "localhost,127.0.0.1"
}
}
}
EOF配置后,Docker 拉取镜像和构建都会通过代理。
crontab 定时任务中的代理
在 crontab 中执行的任务默认不会加载 shell 配置文件中的代理设置。需要在 crontab 中单独指定:
# 编辑 crontab
crontab -e
# 在 crontab 中添加代理环境变量
http_proxy=http://proxy.16yun.cn:8888
https_proxy=http://proxy.16yun.cn:8888
# 定时任务
0 2 * * * /usr/bin/python3 /home/user/collect_data.pysystemd 服务中的代理
对于 systemd 管理的服务,代理配置需要在 service 文件中指定:
[Service]
Environment="http_proxy=http://proxy.16yun.cn:8888"
Environment="https_proxy=http://proxy.16yun.cn:8888"代理的故障自愈
在服务器环境中,建议编写脚本定期检测代理连通性,在代理失效时自动切换到备用节点:
#!/bin/bash
# 检测代理连通性
if curl -s --proxy http://proxy.16yun.cn:8888 --connect-timeout 5 httpbin.org/ip > /dev/null; then
echo "Proxy is working"
else
echo "Proxy failed, switching to backup"
export http_proxy=http://backup-proxy.16yun.cn:8888
export https_proxy=http://backup-proxy.16yun.cn:8888
fiLinux 桌面环境的代理配置
除了终端代理,Linux 桌面环境也有自己的代理设置方式:
GNOME 桌面:设置 → 网络 → 代理 → 手动。配置后,支持 GNOME 代理设置的应用程序会使用这些设置。
KDE 桌面:系统设置 → 网络 → 代理 → 手动配置。
xfce 桌面:设置 → 网络 → 代理。
桌面环境的代理设置对 GUI 应用程序(如浏览器、文件管理器)生效,对终端程序不生效。终端程序仍然需要使用 export 环境变量来配置代理。
远程服务器上的代理配置
在远程服务器上使用代理时,需要注意:
- SSH 连接本身不走 HTTP 代理,需要使用 ProxyJump 或 ProxyCommand
- 如果服务器通过代理访问外部网络,确保代理地址可以从服务器访问
- 服务器上的定时任务(cron)不会加载用户的环境变量,需要单独配置
- 多用户服务器上,每个用户需要单独配置自己的代理
代理配置示例合集
# curl 使用代理
curl -x http://proxy.16yun.cn:8888 https://httpbin.org/ip
# wget 使用代理
wget -e use_proxy=yes -e http_proxy=http://proxy.16yun.cn:8888 https://example.com
# git 使用代理
git clone https://example.com/example/repo.git --config http.proxy=http://proxy.16yun.cn:8888
# pip 使用代理
pip install requests --proxy=http://proxy.16yun.cn:8888
# npm 使用代理
npm install express --proxy http://proxy.16yun.cn:8888需要企业代理方案?
我们可根据目标站点、并发规模与稳定性目标提供定制方案。