Shadowsocks Python版一键安装脚本

技术 秋水逸冰 2571168浏览 1333评论

本脚本适用环境:
系统支持:CentOS 6,7,Debian,Ubuntu
内存要求:≥128M
日期:2018 年 02 月 07 日

关于本脚本:
一键安装 Python 版 Shadowsocks 的最新版。
友情提示:如果你有问题,请先参考这篇《Shadowsocks Troubleshooting》后再问。

默认配置:
服务器端口:自己设定(如不设定,默认从 9000-19999 之间随机生成)
密码:自己设定(如不设定,默认为 teddysun.com)
加密方式:自己设定(如不设定,默认为 aes-256-gcm)
备注:脚本默认创建单用户配置文件,如需配置多用户,安装完毕后参照下面的教程示例手动修改配置文件后重启即可。

Shadowsocks for Windows 客户端下载:
https://github.com/shadowsocks/shadowsocks-windows/releases

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

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

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

Congratulations, Shadowsocks-python server install completed!
Your Server IP        :your_server_ip
Your Server Port      :your_server_port
Your Password         :your_password
Your Encryption Method:your_encryption_method

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

卸载方法:
使用root用户登录,运行以下命令:

./shadowsocks.sh uninstall

单用户配置文件示例(2015 年 08 月 28 日修正):
配置文件路径:/etc/shadowsocks.json

{
    "server":"0.0.0.0",
    "server_port":your_server_port,
    "local_address":"127.0.0.1",
    "local_port":1080,
    "password":"your_password",
    "timeout":300,
    "method":"your_encryption_method",
    "fast_open": false
}

多用户多端口配置文件示例(2015 年 08 月 28 日修正):
配置文件路径:/etc/shadowsocks.json

{
    "server":"0.0.0.0",
    "local_address":"127.0.0.1",
    "local_port":1080,
    "port_password":{
         "8989":"password0",
         "9001":"password1",
         "9002":"password2",
         "9003":"password3",
         "9004":"password4"
    },
    "timeout":300,
    "method":"your_encryption_method",
    "fast_open": false
}

使用命令(2015 年 08 月 28 日修正):
启动:/etc/init.d/shadowsocks start
停止:/etc/init.d/shadowsocks stop
重启:/etc/init.d/shadowsocks restart
状态:/etc/init.d/shadowsocks status

更多版本 Shadowsocks 服务端一键安装脚本:
ShadowsocksR 版一键安装脚本(CentOS,Debian,Ubuntu)
CentOS 下 Shadowsocks-libev 一键安装脚本
Debian 下 Shadowsocks-libev 一键安装脚本
Shadowsocks-go 一键安装脚本(CentOS,Debian,Ubuntu)
Shadowsocks 一键安装脚本(四合一)

参考链接:
https://teddysun.com/339.html

更新日志

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

(2017 年 07 月 21 日)
1、修正:默认加密方式从 aes-256-cfb 改为 aes-256-gcm(官方原版客户端支持该加密方式);
2、新增:安装时可选 16 种加密方式的其中之一。如下所示:

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

(2016 年 08 月 18 日)
1、修正:默认安装 Github 上 master 分支最新版本(目前为 2.9.0)。
2、修正:由于原作者已经不再更新 pip 下的源代码,故不再使用 pip 安装 Shadowsocks,而是改为下载 Github 的 master 分支来安装。如果在一段时间后,版本升级了,则先卸载,并再次执行本脚本就可以升级为最新版。

(2016 年 05 月 12 日)
1、新增在 CentOS 7 下的防火墙规则设置。

(2015 年 08 月 28 日)
1、修正控制脚本 /etc/init.d/shadowsocks 在 CentOS 7 无法查看 status 的问题。

(2015 年 08 月 01 日)
1、新增自定义服务器端口功能(如不设定,默认端口为 8989);

(2015 年 03 月 10 日)
1、新增在 Debian、Ubuntu 下的一键安装;

(2015 年 01 月 21 日)
1、修正配置文件,与官方给出的 Sample 一致;
2、修改启动脚本,使用官方给出的后台启动和停止命令。

(2014 年 10 月 10 日)
跟作者反馈了多用户多端口问题,作者已更新 Wiki 页面。本教程新增多用户多端口配置文件的 sample 。

(2014 年 09 月 24 日)
如何配置多用户?详见:这里
备注:Shadowsocks 已经支持多用户,在配置文件中增加不同的端口,对应不同的密码即可。

(2014 年 07 月 12 日)
1、修正获取公网 IP 时的一个问题。建议不要使用共享公网 IP 的 VPS 来搭建 Shadowsocks 服务。

(2014 年 05 月 29 日)
1、增加 chkconfig 配置,实现 service 命令。
2、配置文件名从 /etc/config.json 改为 /etc/shadowsocks.json(与官方的命名一致)。
3、配置文件中新增 workers ,值默认为 1(与官方配置同步)。

(2014 年 05 月 27 日)
1、修正开机自启动失效的问题。
2、优化是否后台启动成功的判断逻辑。

(2014 年 05 月 04 日)
1、修正对增加防火墙端口逻辑的判断bug,对于已经放行 8989 端口的情况下,则无需再次增加。
2、修正获取服务器 IP 的判断bug,对于多 IP 的 VPS 或服务器,默认只取第一个公网 IP 写到配置文件(/etc/config.json)里。
3、加入开机自启动。

转载请注明:秋水逸冰 » Shadowsocks Python版一键安装脚本

发表我的评论
取消评论

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

表情

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

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

网友最新评论 (1333)

  1. 站长大神,不知道你有没有开设付费的适用于xbox联机的SS服务器啊,是否可以告知一下? 我是顺着xboxone吧找过来的。。
    dbsddn8年前(2016-02-15)回复
    • 本站只有各种版本的SS服务端一键安装脚本,不提供服务。 你可以尝试购买vps来搭建属于你自己的ss服务器
      秋水逸冰8年前(2016-02-15)回复
  2. 我按照一键脚本在Cent os7上搭建好了SS,显示正在运行,但是我客户端上登录SS,怎么也连不上网,所有网站都进不了
    zh6598年前(2016-02-10)回复
  3. 站长,新年快乐啊。 我用了这个SS-PYTHON之后,就我一个人用,每次看YOUTUBE几分钟就会挂掉,有时候就一天都没事? 是什么原因啊? 需要重启:/etc/init.d/shadowsocks restart 之后才可以重新连接。求救supervisor是否有用? 网上的教程supervisor都是MANYUSER版本的,也不知道怎么弄。 十分感谢站长给个回复吧,我快被这个搞疯了。
    calvinslim8年前(2016-02-07)回复
    • 刚没看到站长的回复,不好意思。 我找出那个错误了。 不知道怎么解决,哎。
      calvinslim8年前(2016-02-07)回复
  4. 首先非常感谢作者,帮我省下了无数的时间!感谢! 现在发现VPS上,我的是1G内存。使用大概2-3天就会卡死进程, 按照大哥的重启命令使用后就没事!我就想着能不能在每天的早上7点的时候自动运行一遍/etc/init.d/shadowsocks restart 命令。 否则2天搞一次实在是累,十分感谢!!!
    calvinslim8年前(2016-02-05)回复
    • 参考这篇《Shadowsocks定时任务脚本
      秋水逸冰8年前(2016-02-05)回复
      • 现在几乎一天掉好几次,是不是要排查什么原因啊? 主要是我系统什么都没安装,除了你这个脚本,CENTOS6 64。 LOG: [Errno 32] Broken pipe 2016-02-07 23:08:26 ERROR [Errno 32] Broken pipe 2016-02-07 23:09:09 ERROR [Errno 32] Broken pipe 2016-02-07 23:09:29 INFO
        calvinslim8年前(2016-02-07)回复
        • 秋大的定时任务非常好用,但奇怪我有一个VPS用了定时任务后不成功,这样补上方便后人。 因为安装了LNMP之后,才会导致这个CRONTAB 不执行,后来卸载重新安装几次,终于好了
          calvinslim8年前(2016-03-02)回复
  5. 是不是不支持opensuse/suse?suse 13.1说Not support OS
    WeissBlake8年前(2016-02-05)回复
    • 呃,这个发行版确实不在脚本的支持范围内。 不熟悉这个系统,所以就没匹配。
      秋水逸冰8年前(2016-02-08)回复
  6. 在尝试升级shadowsocks时出现了这样的提示 pip install -U shadowsocks /usr/lib/python2.6/site-packages/pip-7.1.2-py2.6.egg/pip/_vendor/requests/packag es/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib 3.readthedocs.org/en/latest/security.html#insecureplatformwarning. InsecurePlatformWarning Requirement already up-to-date: shadowsocks in /usr/lib/python2.6/site-packages /usr/lib/python2.6/site-packages/pip-7.1.2-py2.6.egg/pip/_vendor/requests/packag es/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib 3.readthedocs.org/en/latest/security.html#insecureplatformwarning. InsecurePlatformWarning You are using pip version 7.1.2, however version 8.0.2 is available. You should consider upgrading via the 'pip install --upgrade pip' command. 是应该先运行提示里面的升级pip指令吗?
    yuki8年前(2016-02-04)回复
    • pip 那里的 Python 版早已不再更新了。作者因为某些你懂的原因停止更新了。 在此之前你先更新一下 pip 这个命令。
      秋水逸冰8年前(2016-02-05)回复
  7. ssr的init.d腳本有錯(debian 7 32bit) 應該是/bin/bash而不是/bin/sh 用sh會有錯誤..
    akw288888年前(2016-01-30)回复
  8. 博主好,我是centOSx32,安装了之后重启报如下错误: [root@localhost etc]# /etc/init.d/shadowsocks status /etc/init.d/shadowsocks: line 48: [: too many arguments shadowsocks is running with PID 450 452 453 [root@localhost etc]# /etc/init.d/shadowsocks restart /etc/init.d/shadowsocks: line 32: [: too many arguments shadowsocks is not running INFO: loading config from /etc/shadowsocks.json 2016-01-28 01:49:59 INFO loading libcrypto from libcrypto.so.10 2016-01-28 01:49:59 ERROR already started at pid 450 shadowsocks start failed 看脚本中大概是说参数太多: stop(){ pid=`ps -ef | grep -v grep | grep -v ps | grep -i "${BIN}" | awk '{print $2}'` if [ ! -z $pid ]; then 请教。
    虾米8年前(2016-01-28)回复
    • 我在自己的 CentOS 32位上测试问题没有重现。 为确保不再出现此问题,我已经修改了启动脚本中的 status 判断。 你可以试试用 Github 上最新的替换掉 /etc/init.d/shadowsocks 后看一下效果。
      秋水逸冰8年前(2016-01-28)回复
  9. 博主你好,我的vps是vultr日本机房,服务端就是用的你的脚本。ss挂在路由器上。 路由器不开ss,用winscp可以单个文件从vps以1.5MB/s左右满速下载(15M宽带);开了ss以后,单个文件下载速度就只有400k,然而同时下载4个文件的话每个文件都是400KB/s左右。请问下这是什么原因?
    zm8年前(2016-01-28)回复
    • 路由器端挂ss的话,估计是设为全局导致的。 所有的出国流量走ss了。
      秋水逸冰8年前(2016-01-28)回复
      • 谢谢解答。 ss脚本安装时有设置单线程限速吗?如果有的话如何修改?
        zm8年前(2016-01-29)回复
        • 找到原因了,测试用的路由器性能太渣,速度起不来。换了pc连以后满速。
          zm8年前(2016-01-29)回复
        • ss没有限速功能。 不过你可以单独去设置 iptables 以达到限速。
          秋水逸冰8年前(2016-01-30)回复
  10. 你好,博主。遇到一些问题,ss已经搭建好,但是不知道为什么手机端可以正常使用,电脑端却不能使用(之前是可以使用的,查看了日志显示 [2016-01-28 07:44:13] Shadowsocks started [2016-01-28 07:44:14] System.Net.Sockets.SocketException: 由于目标计算机积极拒绝,无法连接。 127.0.0.1:8123 在 System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult) 在 Shadowsocks.Controller.PortForwarder.Handler.ConnectCallback(IAsyncResult ar) [2016-01-28 07:44:19] System.Net.Sockets.SocketException: 由于目标计算机积极拒绝,无法连接。 127.0.0.1:8123 在 System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult) 在 Shadowsocks.Controller.PortForwarder.Handler.ConnectCallback(IAsyncResult ar)
    雷锋8年前(2016-01-28)回复
    • 哦对了,忘了说,全局模式可以正常使用,pac模式却不能。
      雷锋8年前(2016-01-28)回复
      • 那就排查一下你本地 pac 的问题先。
        秋水逸冰8年前(2016-01-28)回复
  11. centos python 版本的好像不支持IPv6,debian python的就可以,这是系统局限还是可以自己设置的呀?
    Tr_th8年前(2016-01-26)回复
    • Debian可以那就继续用Debian好了。 应该是 vps 的系统模版问题吧。
      秋水逸冰8年前(2016-01-27)回复
  12. 我键入启动/停止等命令,提示 2 files to edit,然后好几行文字。该如何解决呢
    huang8年前(2016-01-25)回复
  13. PO主,你的这个支持UDP么?想玩游戏用?
    gqydsg8年前(2016-01-25)回复
  14. 下载sh文件失败,是不是服务器有问题啊
    依然是我8年前(2016-01-24)回复
    • 好像我的vultr服务器没法下载,但是ramnode可以下载
      依然是我8年前(2016-01-24)回复
  15. root@tuan23:/# /etc/init.d/shadowsocks restart INFO: loading config from /etc/shadowsocks.json ERROR: found an error in config.json: No JSON object could be decoded shadowsocks stop failed INFO: loading config from /etc/shadowsocks.json ERROR: found an error in config.json: No JSON object could be decoded shadowsocks start failed 重启/停止ss 都会出现这个错误不知道为什么? json这个文件是存在的。
    雷锋8年前(2016-01-24)回复
    • 1、查看 /etc/shadowsocks.json 这个在不在? 2、/etc/shadowsocks.json 里的内容对不对?是不是写错了,从而导致不符合 Json 标准?
      秋水逸冰8年前(2016-01-24)回复
      • 这个文件是再的,应该是编码的问题,我卸载之后重新安装,然后我用notepad编辑,应该是解决了问题,但是问题来了,我设置多用户的时候我停止ss服务显示 root@tuan23:~# /etc/init.d/shadowsocks stop INFO: loading config from /etc/shadowsocks.json 2016-01-24 02:48:47 ERROR not running shadowsocks stop success 这应该是停止成功了,但是为什么我那个密码不对的账号,还是能科学上网。。。
        雷锋8年前(2016-01-24)回复
      • 哦对了你看下进程 2016-01-24 02:48:47 ERROR not running shadowsocks stop success root@tuan23:~# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 Jan23 ? 00:00:00 init root 2 1 0 Jan23 ? 00:00:00 [kthreadd/17051] root 3 2 0 Jan23 ? 00:00:00 [khelper/17051] root 110 1 0 Jan23 ? 00:00:00 upstart-udev-bridge --daemon root 122 1 0 Jan23 ? 00:00:00 /sbin/udevd --daemon root 159 122 0 Jan23 ? 00:00:00 /sbin/udevd --daemon root 160 122 0 Jan23 ? 00:00:00 /sbin/udevd --daemon root 255 1 0 Jan23 ? 00:00:00 upstart-socket-bridge --daemon root 1549 1 0 Jan23 ? 00:00:00 /usr/sbin/rsyslogd -c5 root 1636 1 0 Jan23 ? 00:00:00 /usr/sbin/sshd root 1657 1 0 Jan23 tty1 00:00:00 /sbin/getty 38400 console root 1659 1 0 Jan23 tty2 00:00:00 /sbin/getty 38400 tty2 root 13735 1 0 Jan23 ? 00:00:34 /usr/bin/python /usr/local/bin/ssserver root 13744 1636 0 00:45 ? 00:00:00 sshd: root@pts/1 root 13746 13744 0 00:46 pts/1 00:00:00 -bash root 13925 1636 0 02:27 ? 00:00:00 sshd: root@pts/2 root 13927 13925 0 02:27 pts/2 00:00:00 -bash root 14051 1636 0 02:32 ? 00:00:00 sshd: root@notty root 14053 14051 0 02:33 ? 00:00:00 /usr/lib/openssh/sftp-server root 14197 13927 0 02:54 pts/2 00:00:00 ps -ef 是不是应该kill一些?
        雷锋8年前(2016-01-24)回复
        • 呃,应该是没有kill 13735这个进程的问题
          雷锋8年前(2016-01-24)回复