浏览器不支持(未启用)JavaScript,本页面的某些功能无法正常使用

Ubuntu 上使用 Shadowsocks

在 Ubuntu 上使用 Shadowsocks 主要有两种方式:高性能的命令行客户端(推荐),以及操作更直观的图形界面客户端

方法一:使用命令行客户端 shadowsocks-libev

shadowsocks-libev 是 C 语言编写的客户端,性能好、资源占用低,适合进阶用户。

  1. 安装客户端
    在终端中依次执行以下命令:bashsudo apt update
    sudo apt install shadowsocks-libev -y
  2. 启动并设置开机自启
    依次执行以下命令启动客户端并设置开机自动运行:bashsudo systemctl start shadowsocks-libev-local@config
    sudo systemctl enable shadowsocks-libev-local@config可用 sudo systemctl status shadowsocks-libev-local@config 来检查运行状态。

配置服务器信息
创建并编辑配置文件 config.json:bashsudo nano /etc/shadowsocks-libev/config.json将以下内容粘贴进去,并替换为你的服务器信息。json{
"server":"你的服务器IP或域名",
"server_port":你的服务器端口,
"local_address":"127.0.0.1",
"local_port":1080,
"password":"你的密码",
"timeout":300,
"method":"chacha20-ietf-poly1305"
}

注意:请将 method(加密方式)替换为你的服务器实际使用的算法,推荐使用 chacha20-ietf-poly1305aes-256-gcm 这类更安全的算法。

方法二:使用图形界面客户端 Shadowsocks-Qt5

如果你更喜欢图形界面,可以安装 Shadowsocks-Qt5。相比命令行客户端,它的操作更直观,可以方便地切换服务器和代理模式。

  1. 安装客户端
    通过添加官方 PPA 源来安装:bashsudo add-apt-repository ppa:shadowsocks/ppa
    sudo apt update
    sudo apt install shadowsocks-qt5 -y
  2. 配置与连接
    • 在应用菜单中找到并打开 Shadowsocks-Qt5。
    • 点击 “连接” -> “添加” -> “手动设置”
    • 在弹出的窗口中填写你的服务器地址、端口、密码和加密方式,保存即可。
    • 在主界面选中你刚添加的服务器,点击 “连接”

配置浏览器代理

客户端启动后,你需要在浏览器中进行设置才能开始使用。

  • SwitchyOmega 插件(推荐):安装此浏览器插件,新建一个情景模式,代理协议选择 SOCKS5,地址填 127.0.0.1,端口填 1080(即上面配置中的 local_port)。
  • 系统设置(不推荐):部分应用也可在系统网络设置中手动填入上述 SOCKS5 代理信息。

常见问题与排查

  1. 连接失败怎么办?
    • 首先,确认服务器地址、端口、密码、加密方式无误。
    • 然后,检查本地防火墙或安全软件是否阻止了代理端口。
    • 最后,确认服务器端 Shadowsocks 服务是否正常运行,端口是否开放。
  2. 如何找到客户端 ss-local
    安装后,命令行客户端通常是 ss-local,可通过 whereis sslocal 查找其路径。
  3. 哪些加密方式比较安全?
    务必使用 AEAD 加密算法,如 aes-256-gcmchacha20-ietf-poly1305,避免使用已不安全的 aes-256-cfb

在 Ubuntu 中设置 SOCKS5 代理有多种方式,你可以根据需要选择临时生效永久生效仅对特定应用生效的方法。下面介绍几种常用方案。

假设你的 SOCKS5 代理服务运行在 127.0.0.1:1080(例如 Shadowsocks 的本地监听端口),请根据你的实际地址和端口修改。

Ubuntu代理设置

方法一:通过环境变量设置(命令行/Terminal 生效)

适用于在终端中运行的命令行程序(如 curlwgetapt 等)。

  1. 临时设置(仅当前终端窗口有效)bashexport all_proxy="socks5://127.0.0.1:1080"
    export http_proxy="socks5://127.0.0.1:1080"
    export https_proxy="socks5://127.0.0.1:1080"如果需要用户名密码认证:bashexport all_proxy="socks5://用户名:密码@127.0.0.1:1080"
  2. 永久设置(对所有新终端生效)
    将上述 export 命令添加到你的 shell 配置文件中(如 ~/.bashrc~/.zshrc):bashecho 'export all_proxy="socks5://127.0.0.1:1080"' >> ~/.bashrc
    echo 'export http_proxy="socks5://127.0.0.1:1080"' >> ~/.bashrc
    echo 'export https_proxy="socks5://127.0.0.1:1080"' >> ~/.bashrc
    source ~/.bashrc
  3. 取消代理bashunset all_proxy http_proxy https_proxy
注意:环境变量方式对 sudo 命令通常无效,因为 sudo 会重置环境。如需让 sudo 也使用代理,可使用 sudo -E 保留环境变量,或修改 /etc/sudoers 中的 env_keep

方法二:系统级代理设置(GUI 桌面环境)

Ubuntu 默认的 GNOME 桌面支持图形化配置系统代理,但仅支持 HTTP/HTTPS 代理,不直接支持 SOCKS5。不过你可以安装 switch 工具或使用 gsettings 来设置 SOCKS。

使用 gsettings 命令(适用于 GNOME):

bash

设置 SOCKS5 代理

gsettings set org.gnome.system.proxy mode 'manual'
gsettings set org.gnome.system.proxy.socks host '127.0.0.1'
gsettings set org.gnome.system.proxy.socks port 1080

如果只想让某些应用使用,可保持 mode 为 'none'

通过设置面板:

  • 打开“设置” → “网络” → “网络代理”。
  • 将“方式”选为“手动”。
  • 虽然界面只显示 HTTP/HTTPS/FTP 输入框,但部分应用(如 Firefox)会读取这个 SOCKS 设置。不过大多数应用仍不识别。

方法三:使用代理工具统一管理(推荐)

为了避免环境变量和系统设置的混乱,可以使用 proxychainstsocks 强制任何程序通过 SOCKS5 代理。

安装 proxychains

bash

sudo apt install proxychains4 -y

配置 proxychains

编辑 /etc/proxychains4.conf

bash

sudo nano /etc/proxychains4.conf

找到 [ProxyList] 部分,添加你的 SOCKS5 代理(删除或注释其他类型):

text

socks5 127.0.0.1 1080

如果代理需要用户名密码,格式为:

text

socks5 127.0.0.1 1080 用户名 密码

另外,确保 strict_chaindynamic_chain 未被注释,并注释掉 random_chain

使用方式

在要代理的命令前加上 proxychains4

bash

proxychains4 curl ip.sb
proxychains4 firefox # 启动火狐浏览器并通过代理
proxychains4 apt update

优点:无需修改程序本身,无需环境变量,对任意程序(包括 pingssh 等)有效。

方法四:让特定应用单独使用 SOCKS5 代理

  • 浏览器(Firefox/Chrome):安装 SwitchyOmega 等插件,配置 SOCKS5 代理(地址 127.0.0.1,端口 1080)。
  • 终端工具:如 curl --socks5 127.0.0.1:1080 https://example.comgit config --global http.proxy 'socks5://127.0.0.1:1080'
  • 系统包管理器(apt):apt 本身不支持 SOCKS5,但可以通过 proxychains apt ... 实现。

验证代理是否生效

bash

查看当前出口 IP

curl ip.sb

如果设置了环境变量,可以用 curl -v 查看是否使用代理

curl -v https://www.google.com 2>&1 | grep "SOCKS5"

常见问题

  1. 为什么设置了环境变量,sudo 命令不走代理?
    因为 sudo 默认重置环境变量。解决:使用 sudo -E 保留环境,或修改 /etc/sudoers 添加 Defaults env_keep += "all_proxy http_proxy https_proxy"
  2. 代理速度慢或连接失败?
    • 检查 SOCKS5 服务端是否正常运行(如 systemctl status shadowsocks-libev)。
    • 确认端口 1080 监听在 127.0.0.1 而非 ::1 或外部接口。
    • 尝试关闭系统防火墙或允许本地回环。
  3. 如何让 Docker 容器使用 SOCKS5 代理?
    可在容器启动时传递环境变量,或使用 docker run -e all_proxy=socks5://...

选择最适合你使用场景的方法即可。通常,命令行推荐 proxychains,开发环境推荐 环境变量,浏览器推荐 插件

作者: Zezeng Wang
日期:2026年05月13日

评论