Shadowsocks 一键安装脚本(四合一)

技术 秋水逸冰 3784693浏览 1374评论

本脚本适用环境

系统支持:CentOS 6+,Debian 7+,Ubuntu 12+
内存要求:≥128M
日期  :2019 年 01 月 11 日

关于本脚本

1、一键安装 Shadowsocks-Python, ShadowsocksR, Shadowsocks-Go, Shadowsocks-libev 版(四选一)服务端;
2、各版本的启动脚本及配置文件名不再重合;
3、每次运行可安装一种版本;
4、支持以多次运行来安装多个版本,且各个版本可以共存(注意端口号需设成不同);
5、若已安装多个版本,则卸载时也需多次运行(每次卸载一种);

友情提示:如果你有问题,请先阅读这篇《Shadowsocks Troubleshooting》之后再询问。

默认配置

服务器端口:自己设定(如不设定,默认从 9000-19999 之间随机生成)
密码:自己设定(如不设定,默认为 teddysun.com)
加密方式:自己设定(如不设定,Python 和 libev 版默认为 aes-256-gcm,R 和 Go 版默认为 aes-256-cfb)
协议(protocol):自己设定(如不设定,默认为 origin)(仅限 ShadowsocksR 版)
混淆(obfs):自己设定(如不设定,默认为 plain)(仅限 ShadowsocksR 版)
备注:脚本默认创建单用户配置文件,如需配置多用户,请手动修改相应的配置文件后重启即可。

客户端下载

常规版 Windows 客户端
https://github.com/shadowsocks/shadowsocks-windows/releases

ShadowsocksR 版 Windows 客户端
https://github.com/shadowsocksrr/shadowsocksr-csharp/releases

使用方法

使用root用户登录,运行以下命令:

wget --no-check-certificate -O shadowsocks-all.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-all.sh
chmod +x shadowsocks-all.sh
./shadowsocks-all.sh 2>&1 | tee shadowsocks-all.log

安装完成后,脚本提示如下

Congratulations, your_shadowsocks_version install completed!
Your Server IP        :your_server_ip
Your Server Port      :your_server_port
Your Password         :your_password
Your Encryption Method:your_encryption_method

Your QR Code: (For Shadowsocks Windows, OSX, Android and iOS clients)
 ss://your_encryption_method:your_password@your_server_ip:your_server_port
Your QR Code has been saved as a PNG file path:
 your_path.png

Welcome to visit:https://teddysun.com/486.html
Enjoy it!

卸载方法

若已安装多个版本,则卸载时也需多次运行(每次卸载一种)

使用root用户登录,运行以下命令:

./shadowsocks-all.sh uninstall

启动脚本

启动脚本后面的参数含义,从左至右依次为:启动,停止,重启,查看状态。

Shadowsocks-Python 版:
/etc/init.d/shadowsocks-python start | stop | restart | status

ShadowsocksR 版:
/etc/init.d/shadowsocks-r start | stop | restart | status

Shadowsocks-Go 版:
/etc/init.d/shadowsocks-go start | stop | restart | status

Shadowsocks-libev 版:
/etc/init.d/shadowsocks-libev start | stop | restart | status

各版本默认配置文件

Shadowsocks-Python 版:
/etc/shadowsocks-python/config.json

ShadowsocksR 版:
/etc/shadowsocks-r/config.json

Shadowsocks-Go 版:
/etc/shadowsocks-go/config.json

Shadowsocks-libev 版:
/etc/shadowsocks-libev/config.json

更新日志

2019 年 01 月 11 日:
1、升级:libsodium 到最新版本 1.0.17;
2、升级:mbedtls 到最新版本 2.16.0;

2018 年 11 月 05 日:
1、升级:使用 Github 上最新代码编译出 Go 版二进制可执行文件,版本号 1.2.2。

2018 年 06 月 01 日:
1、修正:在启用了插件 simple-obfs 的情况下,libev 版启动失败的问题;
2、修正:在使用 /etc/init.d/shadowsocks-libev restart 命令重启 libev 版服务端时,偶尔出现的 “bind: Address already in use” 问题;
3、修正:移除 libev 版配置文件中的 local_address 字段;
4、修改:不再默认使用 root 用户启动,改为使用 nobody 用户启动 libev 版服务端 ss-server;
5、升级:mbedtls 到版本 2.9.0;
6、修改:libev 版启动脚本中的 -u 参数(即同时启用 TCP 和 UDP 模式),改到配置文件里配置为 “mode”: “tcp_and_udp”;
7、修改:libev 版配置文件的内置 NameServers 为 8.8.8.8,默认是从 /etc/resolv.conf 中取得。

2018 年 02 月 07 日:
1、修改:将默认端口从 8989 改为从 9000-19999 之间随机生成。

2018 年 02 月 06 日:
1、修改:ShadowsocksR 版为 ShadowsocksRR 最新版;
2、新增:ShadowsocksR 版的协议(protocol)增加了 4 个,分别为:

auth_chain_c
auth_chain_d
auth_chain_e
auth_chain_f

2017 年 12 月 29 日:
1、升级:libsodium 到 1.0.16。

2017 年 11 月 25 日:
1、如果 Linux 内核版本大于 3.7.0,则配置文件默认支持 TCP fast open;
2、新增:libev 版启动时支持 verbose mode,也就是默认写 log 到 /var/log/messages 方便查看。

2017 年 11 月 12 日:
1、新增生成 ss:// 或 ssr:// 链接,以及其二维码图片。
※ 脚本会根据当前安装的版本以及输入的各项配置,自动生成 ss:// 或 ssr:// 的链接并在安装成功后显示,直接复制即可被客户端识别。同时生成其二维码图片,并保存在当前目录下,下载后用看图软件打开,也能被客户端识别。

复制二维码链接后 Shadowsocks 客户端识别示例:

复制二维码链接后 ShadowsocksR 客户端识别示例:

二维码(QR Code)参考链接:
https://github.com/shadowsocks/shadowsocks/wiki/Generate-QR-Code-for-Android-or-iOS-Clients
https://github.com/shadowsocksr-backup/shadowsocks-rss/wiki/SSR-QRcode-scheme

2017 年 10 月 22 日:
1、升级:libsodium 到 1.0.15。

2017 年 10 月 14 日:
1、新增:在安装 Shadowsocks-libev 版时可选安装 simple-obfs 服务端。
※ 脚本通过判断 autoconf 版本是否大于或等于 2.67 来一键安装 simple-obfs 服务端。并且,支持在安装过程中选择 obfs 为 http 或 tls。
※ 使用方法参考:https://teddysun.com/511.html

2017 年 09 月 16 日:
1、修正:Shadowsocks-libev 版 v3.1.0 使用 libc-ares 替换 libudns 依赖包,解决了依赖问题;
2、升级:mbedtls 到版本 2.6.0。

2017 年 07 月 27 日:
1、新增:ShadowsocksR 版可选协议(protocol)auth_chain_b 。使用该协议需更新到最新(4.7.0) ShadowsocksR 版客户端
2、修改:更新 ShadowsocksR 源码下载地址。

2017 年 07 月 23 日:
1、修正:卸载时可自行选择某个版本卸载,若该版本不存在则报错退出。

2017 年 07 月 22 日:
1、修正:默认加密方式从 aes-256-cfb 改为 aes-256-gcm(Python 和 libev 版);
2、新增:安装时可选 16 种加密方式的其中之一(Python 和 libev 版)。如下所示:

aes-256-gcm
aes-192-gcm
aes-128-gcm
aes-256-ctr
aes-192-ctr
aes-128-ctr
aes-256-cfb
aes-192-cfb
aes-128-cfb
camellia-128-cfb
camellia-192-cfb
camellia-256-cfb
chacha20-ietf-poly1305
chacha20-ietf
chacha20
rc4-md5

3、新增:安装时可选 9 种加密方式的其中之一(Go 版)。如下所示:

aes-256-cfb
aes-192-cfb
aes-128-cfb
aes-256-ctr
aes-192-ctr
aes-128-ctr
chacha20-ietf
chacha20
rc4-md5

4、新增:安装时可选 15 种加密方式的其中之一(none 是不加密,ShadowsocksR 版)。如下所示:

none
aes-256-cfb
aes-192-cfb
aes-128-cfb
aes-256-cfb8
aes-192-cfb8
aes-128-cfb8
aes-256-ctr
aes-192-ctr
aes-128-ctr
chacha20-ietf
chacha20
salsa20
xchacha20
xsalsa20
rc4-md5

5、新增:安装时可选 7 种协议(protocol)的其中之一(仅限 ShadowsocksR 版)。如下所示:

origin
verify_deflate
auth_sha1_v4
auth_sha1_v4_compatible
auth_aes128_md5
auth_aes128_sha1
auth_chain_a
auth_chain_b

6、新增:安装时可选 9 种混淆(obfs)的其中之一(仅限 ShadowsocksR 版)。如下所示:

plain
http_simple
http_simple_compatible
http_post
http_post_compatible
tls1.2_ticket_auth
tls1.2_ticket_auth_compatible
tls1.2_ticket_fastauth
tls1.2_ticket_fastauth_compatible

2017 年 02 月 24 日:
1、恢复: 通过 Github API 自动获取 Shadowsocks-libev 的最新 release 版本的功能(v3.0.3)。

2017 年 02 月 13 日:
1、升级: Shadowsocks-libev 版到版本 3.0.2;
2、升级: Shadowsocks-go 版到版本 1.2.1(基于 Github 最新代码,用 go 1.8 编译完成的 x86 和 x86_64 二进制文件);
3、修复:在 Debian 7 下默认没有 libudns-dev 依赖包的问题。

2017 年 02 月 12 日:
1、升级: Shadowsocks-libev 版到版本 3.0.1。

2017 年 01 月 27 日:
1、升级: Shadowsocks-go 版到版本 1.2.1 (仅适用于 x86_64 系统)

更多单版本 Shadowsocks 服务端一键安装脚本

Shadowsocks Python 版一键安装脚本(CentOS,Debian,Ubuntu)
ShadowsocksR 版一键安装脚本(CentOS,Debian,Ubuntu)
CentOS 下 Shadowsocks-libev 一键安装脚本
Debian 下 Shadowsocks-libev 一键安装脚本
Shadowsocks-go 一键安装脚本(CentOS,Debian,Ubuntu)

注意:以上单版本不可与该四合一版本混用。

转载请注明:秋水逸冰 » Shadowsocks 一键安装脚本(四合一)

发表我的评论
取消评论

请输入正确答案后提交评论 *超出时限。 请再次填写验证码。

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (1374)

  1. 日志能单独放在/var/log/shadowsocks.log 里吗? 不想混在messages
    轻微6年前(2018-03-08)回复
  2. 用ss+obfs,http混淆+80端口也无济于事,一个月被封了N次IP,换SSR会不会更安全一些?
    6年前(2018-03-08)回复
  3. GCE 有 VPC 需要自己设置防火墙,在机器上设置iptable 之类的对外网是无效的。参见:https://stackoverflow.com/questions/21065922/how-to-open-a-specific-port-such-as-9090-in-google-compute-engine
    Vin6年前(2018-03-08)回复
  4. 请问大神,脚本是否支持多用户呢? 以前装了个SSR,但是不知道 aes-256-gcm 是不是版本太老了?
    aacfdds6年前(2018-03-07)回复
  5. 请问可否添加自动更换随机端口号的功能?比如自动每24个小时生成一个随机的端口号,然后读取json,替换server_port字段的值,然后重启ssr服务。这样可以一定程度上避免某端口流量过大ip被墙
    cyan6年前(2018-03-05)回复
  6. 腻害腻害,威锋来的,可否加个友链大佬
    Honest1y6年前(2018-03-05)回复
  7. 请问libev版重启机器后,再重新启动libev虽然显示启动成功,但是实际上没有开启,请问该如何解决
    ryan6年前(2018-03-04)回复
  8. 今天安装突然出现一个错误,知道怎么解决吗 错误: Multilib version problems found. This often means that the root cause is something else and multilib version checking is just pointing out that there is a problem. Eg.: 1. You have an upgrade for curl which is missing some dependency that another package requires. Yum is trying to solve this by installing an older version of curl of the different architecture. If you exclude the bad architecture yum will tell you what the root cause is (which package requires what). You can try redoing the upgrade with --exclude curl.otherarch ... this should give you an error message showing the root cause of the problem. 2. You have multiple architectures of curl installed, but yum can only see an upgrade for one of those architectures. If you don't want/need both architectures anymore then you can remove the one with the missing update and everything will work. 3. You have duplicate versions of curl installed already. You can use "yum check" to get yum show these errors. ...you can also use --setopt=protected_multilib=false to remove this checking, however this is almost never the correct thing to do as something else is very likely to go wrong (often causing much more problems). 保护多库版本:curl-7.29.0-42.el7_4.1.x86_64 != curl-7.54.0-1.el7.centos.x86_64 错误:保护多库版本:curl-7.29.0-42.el7_4.1.x86_64 != curl-7.50.3-1.el7.centos.x86_64 [Error] Failed to install curl Please visit: https://teddysun.com/486.html and contact.
    patrick6年前(2018-03-03)回复
    • curl 出现多个版本的冲突问题,卸载掉旧版本,然后重新安装即可。
      秋水逸冰6年前(2018-03-04)回复
  9. 输入命令后出现了下面的情况,不知道该怎么办办呀,求秋大指点~~ [root@host ~]# wget --no-check-certificate -O shadowsocks-all.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-all.sh --2018-03-01 01:37:42-- https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-all.sh Resolving raw.githubusercontent.com... failed: Temporary failure in name resolution. wget: unable to resolve host address “raw.githubusercontent.com” [root@host ~]# chmod +x shadowsocks-all.sh [root@host ~]# ./shadowsocks-all.sh 2>&1 | tee shadowsocks-all.log
    jhx6年前(2018-03-01)回复
    • VPS无法解析 Github 域名。换个时间段重试即可。
      秋水逸冰6年前(2018-03-04)回复
  10. 醉了,装了之后网速慢死了,远不如以前
    handler6年前(2018-03-01)回复
  11. 逸冰大哥,请问SS的加密方式 GCM和CFB加密方式区别 在SS加密方式中哪个更安全, 如何避免被封IP 是隔断时间换IP还是换端口?
    左简6年前(2018-03-01)回复
  12. “libev 版启动时支持 verbose mode,也就是默认写 log 到 /var/log/messages 方便查看。” 请问怎么取消这个功能,日志文件太大,7个多G了,占满了磁盘。用的是gc。
    csrf6年前(2018-02-27)回复
  13. 通过博主的文章,我直接复制了您的脚本,之后虽然显示已经成功,但是连接上去一直都是显示超时,不知道是我哪里没有设置对,不是太懂这些代码的含义,也不知道哪里做错了,虽然最后输出的Welcome to visit: https://teddysun.com/486.html Enjoy it!这一段教程中说的成功字样,但是还是显示超时,楼主可以告诉我是有什么可能导致出现这样的结果的吗?
    不懂6年前(2018-02-27)回复
    • 你可能是 防火墙没有打开相应的端口
      loukky6年前(2018-03-03)回复
  14. 秋大, 请问ios支持ssr的客户端那个好使些?麻烦推荐下,谢谢!
    Enter6年前(2018-02-26)回复
  15. 秋大,如何在配置文件中启用UDP呢
    loukky6年前(2018-02-26)回复