本文分享 Ubuntu 系统安装 Shadowsocks 的操作过程,使用 Ubuntu 官方软件源中的 shadowsocks-libev 软件包部署 Shadowsocks 服务端。和常见 Shadowsocks 一键脚本相比,本文不依赖第三方脚本,而是通过 apt 安装软件包,再手动修改 config.json 配置文件。
本教程适合已经有 Ubuntu 系统的 VPS、希望通过系统软件源安装 Shadowsocks 的用户。本文使用 Ubuntu 22.04.5 LTS 演示,完整流程包括 shadowsocks-libev 安装、监听地址修改、端口和密码设置、服务状态检查、端口监听以及客户端参数整理。
一、Ubuntu 安装 Shadowsocks 方式说明
本站原先使用的 Ubuntu 系统 Shadowsocks / SS 一键脚本会自动下载源码、安装依赖,并尝试编译 shadowsocks-libev。这套脚本在早期的系统上使用比较方便,但长期没有更新后,在新版 Ubuntu 上容易遇到源码结构、依赖版本或编译命令不匹配的问题。
本站这次在 Ubuntu 22.04.5 LTS 上重新测试原来的 Ubuntu 系统 Shadowsocks 一键脚本,安装过程卡在 shadowsocks-libev 编译阶段,并出现下面的错误:
./configure: No such file or directory make: *** No targets specified and no makefile found. Stop.
这说明原来的脚本没有完成安装,不适合作为新版 Ubuntu Shadowsocks 教程的主流程。因此本文改用 Ubuntu 官方软件源安装 shadowsocks-libev。这种方式不需要下载第三方脚本,安装、启动和卸载都交给系统软件包管理器处理。
如果大家需要交互式 Shadowsocks 一键安装脚本,或者想安装 Shadowsocks-rust,可以查看本站新版:Shadowsocks 一键安装脚本教程:SS 一键脚本搭建 VPS 服务端。
本文只演示通过 Ubuntu 官方源安装 shadowsocks-libev 的方法,两篇文章采用的安装方式不一样,可以根据自己的需要选择。
二、检查 Ubuntu 系统环境
在开始前,需要先确认当前 VPS 使用的是 Ubuntu 系统。
登录 SSH 后执行:
cat /etc/os-release
本文服务器返回结果如下:
PRETTY_NAME="Ubuntu 22.04.5 LTS" NAME="Ubuntu" VERSION_ID="22.04" VERSION="22.04.5 LTS (Jammy Jellyfish)" VERSION_CODENAME=jammy ID=ubuntu ID_LIKE=debian UBUNTU_CODENAME=jammy

确认 VPS 使用 Ubuntu 22.04 环境,再继续安装 shadowsocks-libev
确认系统后,再继续安装。本文命令基于 Ubuntu 的 apt 软件源环境编写,不建议复制到 CentOS、AlmaLinux、Rocky Linux 或 Debian 机器上使用。
如果大家使用的是 CentOS 系统,可以参考:搬瓦工 CentOS 系统各版本搭建 Shadowsocks / SS 详细教程。Debian 系统虽然同样使用 apt,但软件包版本、默认配置和服务文件可能会有差别。
三、通过 apt 安装 shadowsocks-libev
先更新软件源,然后安装 shadowsocks-libev:
apt update -y apt install -y shadowsocks-libev
本文安装过程中,系统自动安装了 libbloom1、libcork16、libcorkipset1、libjsonparser1.1 等依赖,并从 Ubuntu Jammy 的 universe 仓库安装 shadowsocks-libev。
安装结果中可以看到软件包版本:
shadowsocks-libev 3.3.5+ds-7build1
安装完成后还会创建 systemd 服务链接:
Created symlink /etc/systemd/system/multi-user.target.wants/shadowsocks-libev.service → /lib/systemd/system/shadowsocks-libev.service.

通过 Ubuntu 官方软件源安装 shadowsocks-libev,并生成 systemd 服务
出现 Created symlink 后,说明 shadowsocks-libev 服务已经安装,并设置了开机启动。此时还不能连接,因为默认配置只监听本机地址,需要继续修改配置文件。
四、修改 shadowsocks-libev 配置文件
Ubuntu 官方源安装完成后,配置文件路径为:
/etc/shadowsocks-libev/config.json
先查看配置目录:
ls -l /etc/shadowsocks-libev/
本文服务器返回结果如下:
total 4 -rw-r--r-- 1 root root 202 Jun 5 04:24 config.json

确认 config.json 位于 /etc/shadowsocks-libev/ 目录
继续查看默认配置内容:
cat /etc/shadowsocks-libev/config.json
默认配置内容如下:
{
"server":["::1", "127.0.0.1"],
"mode":"tcp_and_udp",
"server_port":8388,
"local_port":1080,
"password":"随机密码",
"timeout":86400,
"method":"chacha20-ietf-poly1305"
}

默认配置只监听本机地址,外部客户端无法连接
默认配置的关键问题在 server 一项。::1 和 127.0.0.1 都是本机地址,只允许本机访问,外部客户端无法通过 VPS IP 连接,所以需要改成 0.0.0.0。另外,默认端口、密码和加密方式也可以按照自己的客户端配置习惯重新设置。
修改前先备份原配置:
cp /etc/shadowsocks-libev/config.json /etc/shadowsocks-libev/config.json.bak
然后写入新的 Shadowsocks 服务端配置:
cat > /etc/shadowsocks-libev/config.json <<'EOF'
{
"server":"0.0.0.0",
"mode":"tcp_and_udp",
"server_port":12345,
"password":"bwgss123456",
"timeout":300,
"method":"aes-256-gcm"
}
EOF
本文配置项说明如下:
server:监听地址,设置为0.0.0.0,允许外部客户端连接mode:连接模式,使用tcp_and_udpserver_port:SS 端口,本文演示为12345password:客户端连接密码,正式使用时请改成自己的复杂密码timeout:连接超时时间,本文使用300method:加密方式,本文使用aes-256-gcm
写入后再次查看配置文件:
cat /etc/shadowsocks-libev/config.json
修改后的配置如下:
{
"server":"0.0.0.0",
"mode":"tcp_and_udp",
"server_port":12345,
"password":"bwgss123456",
"timeout":300,
"method":"aes-256-gcm"
}

将监听地址改为 0.0.0.0,并设置 SS 端口、密码和 aes-256-gcm
五、启动 shadowsocks-libev 并检查端口监听
配置文件修改完成后,重启 shadowsocks-libev 服务:
systemctl restart shadowsocks-libev
然后查看服务状态:
systemctl status shadowsocks-libev --no-pager
本文服务器的服务状态如下,关键是 Active: active (running):
● shadowsocks-libev.service - Shadowsocks-libev Default Server Service
Loaded: loaded (/lib/systemd/system/shadowsocks-libev.service; enabled; vendor preset: enabled)
Active: active (running)
Main PID: 7443 (ss-server)
CGroup: /system.slice/shadowsocks-libev.service
└─7443 /usr/bin/ss-server -c /etc/shadowsocks-libev/config.json

服务状态显示 active running,说明 shadowsocks-libev 已正常运行
这一步可以确认两件事:服务名是 shadowsocks-libev,运行进程是 ss-server。以后启动、停止、重启和查看状态都使用这个服务名。
常用管理命令如下:
systemctl start shadowsocks-libev
systemctl stop shadowsocks-libev
systemctl restart shadowsocks-libev
systemctl status shadowsocks-libev --no-pager
然后继续检查端口监听状态,本文演示的端口是 12345,执行:
ss -tulnp | grep 12345
本文服务器返回结果如下:
udp UNCONN 0 0 0.0.0.0:12345 0.0.0.0:* users:(("ss-server",pid=7443,fd=6))
tcp LISTEN 0 1024 0.0.0.0:12345 0.0.0.0:* users:(("ss-server",pid=7443,fd=5))

TCP 和 UDP 都在监听 SS 端口,进程为 ss-server
这里能看到 TCP 和 UDP 都在监听 12345,并且进程名为 ss-server,说明 Ubuntu Shadowsocks 服务端已经开始监听客户端连接。
再检查开机自启状态:
systemctl is-enabled shadowsocks-libev
本文服务器返回:
enabled
返回 enabled,说明服务器重启后 shadowsocks-libev 会自动启动。如果大家的返回结果不是 enabled,可以执行下面的命令设置开机自启:
systemctl enable shadowsocks-libev
继续检查系统是否启用了 ufw 防火墙:
ufw status
本文服务器返回:
-bash: ufw: command not found
这表示当前系统没有安装 ufw,并不是 Shadowsocks 安装失败。如果客户端无法连接,重点检查 VPS 商家后台的安全组、防火墙或入站规则,确认已经放行 SS 端口的 TCP 和 UDP。

enabled 表示 shadowsocks-libev 已开机自启,ufw 未安装不影响服务运行
六、客户端添加 Shadowsocks / SS 节点
服务端安装完成后,本地电脑或手机需要添加 Shadowsocks 节点。客户端填写内容和 config.json 配置一一对应。
| 客户端字段 | 填写内容 |
|---|---|
| 服务器地址 | 填写 VPS IP 地址 |
| 端口 | 12345,或者自己设置的端口 |
| 密码 | 填写 config.json 里的 password |
| 加密方式 | aes-256-gcm |
| 插件 | 不填写 |
Windows、macOS、Android、iOS 上的 Shadowsocks 客户端界面会有一些差别,但都需要填写服务器 IP、端口、密码和加密方式。本文没有安装 SIP003 插件,所以客户端插件位置保持为空。
如果大家使用的是 iPhone 或 iPad,可以在 Shadowrocket 等支持 Shadowsocks 的客户端里添加这个 SS 节点。
安装 Ubuntu 系统的 VPS 负责运行 Shadowsocks 服务端,iPhone 或 iPad 则通过 Shadowrocket 连接 SS 节点。具体客户端填写步骤可以参考:iOS(苹果手机)系统 Shadowsocks 客户端配置使用教程。
如果客户端添加后无法连接,先不要修改协议或更换加密方式。先确认客户端中的端口、密码、加密方式和 /etc/shadowsocks-libev/config.json 里的设置保持一致。
七、Ubuntu Shadowsocks 连接问题排查
Ubuntu 系统安装 Shadowsocks 后,即使服务端处于运行状态,客户端仍可能连接失败。遇到连接问题时,建议按照下面顺序进行检查。
1. 检查 config.json 配置文件
先查看当前服务端配置:
cat /etc/shadowsocks-libev/config.json
重点检查 server_port、password、method 是否和客户端填写一致。还要确认 server 是否为 0.0.0.0,否则外部客户端可能无法连接。
2. 检查 shadowsocks-libev 服务状态
运行下面的命令:
systemctl status shadowsocks-libev --no-pager
如果没有看到 active (running),可以先重启服务:
systemctl restart shadowsocks-libev
如果重启失败,再回头检查 config.json 是否少了逗号、引号或大括号。
3. 检查 Shadowsocks 端口监听
把下面命令里的 12345 换成自己的 SS 端口:
ss -tulnp | grep 12345
正常结果应该同时看到 TCP 和 UDP。如果没有输出,说明 ss-server 没有监听这个端口,需要检查服务状态和配置文件。
4. 检查防火墙和安全组
先查看当前系统是否有 ufw:
ufw status
本文测试机器返回:
-bash: ufw: command not found
这说明当前系统没有安装 ufw,并不是 Shadowsocks 安装失败。如果大家的 VPS 后台有安全组、防火墙或入站规则,则需要在后台放行 Shadowsocks 端口。
如果系统启用了 ufw,可以放行本文演示端口的 TCP 和 UDP:
ufw allow 12345/tcp ufw allow 12345/udp ufw reload
云服务器后台里,相关设置一般位于 Firewall、Security Group、Network、防火墙或入站规则等栏目中。协议选择 TCP 和 UDP,端口填写大家在 config.json 中设置的 server_port。
八、Ubuntu Shadowsocks 常见问题
下面整理几个 Ubuntu 系统安装 Shadowsocks 时容易遇到的问题,主要涉及旧版一键脚本、官方源安装、默认监听地址、Shadowrocket 连接和卸载命令。安装过程中遇到不清楚的地方,可以按照下面的问题逐项检查。
1. Ubuntu 系统还能用 Shadowsocks 一键安装脚本吗?
能不能使用,要看具体脚本是否还在维护。本站这次测试原来的 Ubuntu 系统 Shadowsocks 一键脚本时没有安装成功,所以本文改用 Ubuntu 官方源安装 shadowsocks-libev。
如果大家需要新版交互式安装流程,可以参考前面提到的 Shadowsocks 一键安装脚本教程。
2. apt 安装 shadowsocks-libev 和 SS 一键脚本有什么区别?
apt 安装使用 Ubuntu 官方软件源里的 shadowsocks-libev 软件包,安装、升级和卸载都通过系统包管理器完成。
Shadowsocks 一键脚本包含下载脚本、添加仓库、编译源码或引导输入参数等步骤。本文选择官方源安装,是为了避开原脚本在 Ubuntu 22.04 上编译失败的问题。
3. 为什么默认配置改完前客户端连不上?
本文安装后的默认配置中,server 监听 127.0.0.1 和 ::1。这两个地址只允许本机访问,外部客户端不能通过 VPS IP 连接。把 server 改成 0.0.0.0 后,再放行 Shadowsocks 端口,外部客户端才能连接。
4. Shadowrocket 可以连接本文搭建的 Shadowsocks 节点吗?
可以。Shadowrocket 支持添加 Shadowsocks 节点,填写 VPS IP、端口、密码和 aes-256-gcm 加密方式即可。本文没有配置 SIP003 插件,所以 Shadowrocket 里的插件参数保持为空。
5. 这套 Ubuntu 系统 Shadowsocks 安装方式适合多用户吗?
本文使用 shadowsocks-libev 演示单个 Shadowsocks 服务端配置,更适合个人使用。如果需要给多个用户分别配置节点、端口或账号,本文这种官方源安装方式管理起来会比较麻烦。如果准备改用支持多用户配置的 V2Ray 方案,可以参考:V2Ray 多用户配置教程。
6. 如何卸载 shadowsocks-libev?
先停止服务:
systemctl stop shadowsocks-libev
再卸载软件包:
apt remove --purge -y shadowsocks-libev
如果确定不再保留配置文件,可以删除配置目录:
rm -rf /etc/shadowsocks-libev
九、总结
本文介绍了 Ubuntu 系统安装 Shadowsocks 的完整流程:通过 apt 从官方源安装 shadowsocks-libev,修改 /etc/shadowsocks-libev/config.json,把监听地址改为 0.0.0.0,设置 SS 端口、密码和 aes-256-gcm 加密方式,然后检查 shadowsocks-libev 服务状态、端口监听和开机自启。
这篇文章适合不想继续使用原 Ubuntu 系统 SS 一键脚本、希望通过系统软件源部署 Shadowsocks 的用户。需要 Shadowsocks-rust 或交互式脚本安装方式时,可以参考本站新版 Shadowsocks 一键安装脚本教程;如果只是要在 Ubuntu 服务器上部署一个基础 Shadowsocks 节点,按照本文的官方源安装方式完成配置即可。
如果大家后续准备在 Ubuntu 服务器上改用 V2Ray 协议,可以参考:Ubuntu 搭建 V2Ray 教程,按照对应步骤安装 V2Ray 并配置 VMess-TCP 节点。
| 机房位置 | 带宽 | 流量 | 设备 | 价格 | 购买 |
|---|---|---|---|---|---|
| 洛杉矶 500 | 2.5Gbit | 500GB/月 | 5台 | $5.88/月-$58.88/年 | 购买 |
| 洛杉矶 1000 | 5Gbit | 1T/月 | 无限 | $9.88/月-$98.88/年 | 购买 |
| 洛杉矶 5000 | 5Gbit | 5T/月 | 无限 | $48.99/月-$489.99/年 | 购买 |
| 洛杉矶 10000 | 5Gbit | 10T/月 | 无限 | $93.99/月-$948.99/年 | 购买 |
| 香港 CMI+NTT | 2.5Gbps | 500GB/月 | 5台 | $8.99/月-$89.99/年 | 购买 |
| 香港 CMI+NTT | 5Gbps | 1T/月 | 无限 | $14.90/月-$113.99/年 | 购买 |
| 香港 CMI+NTT | 5Gbps | 5T/月 | 无限 | $59.99/月-$599.99/年 | 购买 |
| 香港 IPLC 专线 | 300MB 独享 | 300GB/月 | 3台 | $21.00/月-$210.00/年 | 购买 |
| 香港 IPLC 专线 | 1G 独享 | 1T/月 | 无限 | $59.00/月-$589.00/年 | 购买 |
| 香港 CN2 GIA | 100MB 独享 | 100GB/月 | 3台 | $34.99/月-$349.99/年 | 购买 |
| 香港 CN2 GIA | 500MB 独享 | 500GB/月 | 5台 | $149.99/月-$1499.99/年 | 购买 |
| 香港 CN2 GIA | 1G 独享 | 1T/月 | 无限 | $279.99/月-$2799.99/年 | 购买 |
| 日本 CN2 GIA | 100MB 独享 | 100GB/月 | 3台 | $29.99/月-$299.99/年 | 购买 |
| 日本 CN2 GIA | 200MB 独享 | 500GB月 | 5台 | $135.99/月-$1349.99/年 | 购买 |
| 日本 CN2 GIA | 500MB 独享 | 1T/月 | 无限 | $239.00/月-$2399.00/年 | 购买 |
| 日本 CN2 GIA | 700MB 独享 | 5T/月 | 无限 | $1135.00/月-$11395.00/年 | 购买 |
| 伦敦 500 | 2.5Gbps | 500GB/月 | 5台 | $6.8/月-$67.99/年 | 购买 |
| 伦敦 1000 | 5Gbps | 1T/月 | 无限 | $11.29/月-$113.99/年 | 购买 |
| 伦敦 5000 | 5Gbps | 5T/月 | 无限 | $59.99/月-$559.99/年 | 购买 |
需要 VPS 服务器?Just My Socks 更适合直接使用代理服务;如果您需要建站、部署项目、搭建环境或学习 Linux,可以选择搬瓦工 VPS,参考 搬瓦工在售 VPS 套餐整理与购买推荐。 |
|||||

搬瓦工教程