Shadowsocks Python版一键安装脚本

技术 秋水逸冰 2611198浏览 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. 请问出现这个错误是哪里出问题了?谢谢 Traceback (most recent call last): File "/usr/bin/ssserver", line 9, in load_entry_point('shadowsocks==2.6.7', 'console_scripts', 'ssserver')() File "/usr/lib/python2.6/site-packages/shadowsocks/server.py", line 68, in main tcp_servers.append(tcprelay.TCPRelay(a_config, dns_resolver, False)) File "/usr/lib/python2.6/site-packages/shadowsocks/tcprelay.py", line 591, in __init__ server_socket.bind(sa) File "", line 1, in bind socket.error: [Errno 98] Address already in use
    蜗大牛10年前(2015-02-05)回复
  2. 你好,我自己买的一个vps,centeros6.4,使用putty安装shadowsocks提升成功,但是在客户机上怎么使用?windows7ultimate32位。下载了shadowsocks-win客户端,填写了登录ip、端口号和密码,但是看日志一直提示:System.Net.Sockets.SocketException: 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
    karl10年前(2015-02-04)回复
    • 如果服务端已经正确安装并启动了,客户端的配置可以参考这篇教程
      秋水逸冰10年前(2015-02-04)回复
  3. /usr/lib/python2.6/site-packages/shadowsocks/utils.py:148: DeprecationWarning: BaseException.message has been deprecated as of Python 2.6 出现了这个错误?我是小白。用的aws ami
    washan10年前(2015-02-03)回复
  4. 我设置完毕后客户端无法连接,但是在防火墙规则上没有问题 其中,shadowsocks的部分日志如下所示: [2015-02-03 21:42:08] Shadowsocks started [2015-02-03 21:42:20] System.Net.Sockets.SocketException: 请求的名称有效,但是找不到请求的类型的数据。 在 System.Net.Dns.GetAddrInfo(String name) 在 System.Net.Dns.InternalGetHostByName(String hostName, Boolean includeIPv6) 在 System.Net.Dns.GetHostEntry(String hostNameOrAddress) 在 Shadowsocks.Controller.Handler.Start(Byte[] firstPacket, Int32 length) [2015-02-03 21:42:20] System.Net.Sockets.SocketException: 请求的名称有效,但是找不到请求的类型的数据。 在 System.Net.Dns.GetAddrInfo(String name) 在 System.Net.Dns.InternalGetHostByName(String hostName, Boolean includeIPv6) 在 System.Net.Dns.GetHostEntry(String hostNameOrAddress) 在 Shadowsocks.Controller.Handler.Start(Byte[] firstPacket, Int32 length) [2015-02-03 21:42:21] System.Net.Sockets.SocketException: 请求的名称有效,但是找不到请求的类型的数据。 在 System.Net.Dns.GetAddrInfo(String name) 在 System.Net.Dns.InternalGetHostByName(String hostName, Boolean includeIPv6) 在 System.Net.Dns.GetHostEntry(String hostNameOrAddress)
    Ann10年前(2015-02-03)回复
  5. iptables 这个文件修改过就不能启动了呢 哪怕是还原会原来的代码也不能启动 会提是错误 /etc/init.d/iptables restart iptables: Setting chains to policy ACCEPT: raw nat mangle f[ OK ] iptables: Flushing firewall rules: [ OK ] iptables: Unloading modules: [ OK ] iptables: Applying firewall rules: FATAL: Module ip_tables not found. ‘ptables-restore v1.4.7: iptables-restore: unable to initialize table ‘raw Error occurred at line: 2 Try `iptables-restore -h’ or ‘iptables-restore –help’ for more information. [FAILED]
    夜曦10年前(2015-02-01)回复
    • 请认真阅读文章。iptables 并不是必须要改的。
      秋水逸冰10年前(2015-02-02)回复
  6. 看不太懂。。。
    羽尘10年前(2015-02-01)回复
  7. 多用户所端口需要添加那些端口吗 比如 -A INPUT -p tcp -m state --state NEW -m tcp --dport 9001 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 9002 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 9003 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 9004 -j ACCEPT 为什么添加后重启防火墙会提示错误呢 /etc/init.d/iptables restart iptables: Setting chains to policy ACCEPT: raw nat mangle f[ OK ] iptables: Flushing firewall rules: [ OK ] iptables: Unloading modules: [ OK ] iptables: Applying firewall rules: FATAL: Module ip_tables not found. 'ptables-restore v1.4.7: iptables-restore: unable to initialize table 'raw Error occurred at line: 2 Try `iptables-restore -h' or 'iptables-restore --help' for more information. [FAILED]
    夜曦10年前(2015-02-01)回复
  8. 多用户多端口和单用户有什么区别?? 貌似单用户的一个账号也可以多设备同时在线的啊, 为什么还要多一个多账户多端口呢,有什么优势? 听说一直在线被封的可能性会大很多,我的阵亡了是不是因为我的一直在线就被盯上了呢。我的手机平板都是24小时在线的,一个账号 手机平板电脑同时能用的,
    夜曦10年前(2015-02-01)回复
    • 多端口的好处不言而喻,可以分享出去。
      秋水逸冰10年前(2015-02-02)回复
  9. 显示了这个 WARNING: certificate common name `www.github.com' doesn't match requested host name `raw.githubusercontent.com'.
    滕然凌若10年前(2015-02-01)回复
    • ssl证书匹配的问题,所以下载的时候才要跟个 --no-check-certificate 参数
      秋水逸冰10年前(2015-02-02)回复
  10. 请问如果一个VPS有多个IP,请问如何配置Shadowsocks呢
    碧海帆影10年前(2015-01-31)回复
    • 脚本会自动获取主 IP 来生成配置文件。
      秋水逸冰10年前(2015-01-31)回复
      • 就是说一个多IP的VPS只能是其中之一IP的能用Shadowsocks,其它的IP就配置不了Shadowsocks,是这样理解吧。那配置VPN的话,能否让几个IP分别配置不同帐号呢,同一个VPS,谢谢。想把多IP的VPS充分利用
        碧海帆影10年前(2015-02-01)回复
  11. 秋水你好,多账户那个,重启动总提示第11行有错误,我也没看明白哪里,后来不用复制粘贴自己打了一遍代码,过去了。
    oldcheetah10年前(2015-01-27)回复
    • 可否贴出错误信息?
      秋水逸冰10年前(2015-01-27)回复
      • 不好意思,没有保存。重启时大概就是说引导那个.json文件出错,在第几行第几节,都指向"9003":"password3", "9004":"password4" },第一次是我忘记类似"password3",后那个,(逗号)了,第二次 },这里死活过不去,最后改成下面那样过去了: { "server":"1.1.1.1", "local_address": "127.0.0.1", "local_port":1080, "port_password": { "8900":"111111", "8901":"222222" }, "timeout":300, "method":"aes-256-cfb" }
        oldcheetah10年前(2015-01-28)回复
        • 可能是有全角字符或者空格之类的,又或者是多了个逗号少了个逗号什么的。 仔细检查配置内容,一般都出在这上面。
          秋水逸冰10年前(2015-01-28)回复
  12. 原来5.0的系统也可以。。。测试成功。。。谢谢你的脚本。。。
    洋洋10年前(2015-01-27)回复
    • CentOS 5.x会被脚本检测到,然后停止运行。你说成功了,那就会是这 2 种情况,一是系统并非 5.x ,二是你手动升级怕 Python 及 gcc 版本,并修改了脚本里的判断条件。
      秋水逸冰10年前(2015-01-27)回复
  13. 为什么5.0的系统不能用呢。
    洋洋10年前(2015-01-27)回复
  14. 如何限制单用户限制多个同时在线呢?
    ken10年前(2015-01-27)回复
    • 这是商业化考虑的方案,不在脚本的考虑范围内。有兴趣的话,去看看 ss-panel 面板。
      秋水逸冰10年前(2015-01-27)回复
  15. 好感谢楼主分享的安装脚本,很方便滴。以后会常来帖子下学习的。谢谢楼主无私解救技术小白们!
    happy10年前(2015-01-26)回复