2025 年 Linux 终端代理设置教程(export + proxychains + apt)

2025 年 Linux 终端代理设置完整教程。覆盖 export 临时代理、proxychains 强制代理、apt/git/curl 等工具代理配置。

亿牛云技术团队2025年5月25日5 分钟阅读

适用场景

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.conf

Git 代理:

git config --global http.proxy http://proxy.16yun.cn:8888
git config --global https.proxy http://proxy.16yun.cn:8888

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

常见问题

问题 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 环境变量方式在所有发行版上都通用。

安全注意事项

  1. 不要在 export 命令中明文保存密码
  2. 建议将代理配置写入 .bashrc 并限制文件权限
  3. 使用 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.py

systemd 服务中的代理

对于 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
fi

Linux 桌面环境的代理配置

除了终端代理,Linux 桌面环境也有自己的代理设置方式:

GNOME 桌面:设置 → 网络 → 代理 → 手动。配置后,支持 GNOME 代理设置的应用程序会使用这些设置。

KDE 桌面:系统设置 → 网络 → 代理 → 手动配置。

xfce 桌面:设置 → 网络 → 代理。

桌面环境的代理设置对 GUI 应用程序(如浏览器、文件管理器)生效,对终端程序不生效。终端程序仍然需要使用 export 环境变量来配置代理。

远程服务器上的代理配置

在远程服务器上使用代理时,需要注意:

  1. SSH 连接本身不走 HTTP 代理,需要使用 ProxyJump 或 ProxyCommand
  2. 如果服务器通过代理访问外部网络,确保代理地址可以从服务器访问
  3. 服务器上的定时任务(cron)不会加载用户的环境变量,需要单独配置
  4. 多用户服务器上,每个用户需要单独配置自己的代理

代理配置示例合集

# 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

需要企业代理方案?

我们可根据目标站点、并发规模与稳定性目标提供定制方案。