Skip to content

CentOS/Debian/Ubuntu ShadowsocksR 单/多端口 一键管理脚本

下文转自 doub.io
___________________
本文最后更新于 2017年10月8日 19:31可能会因为没有更新而失效。如已失效或需要修正,请留言!
最近经常有小白找我让我把他们安装ShadowsocksR服务端,一开始都是手动安装的,后来嫌麻烦,就打算用脚本,但是网上基本上只是安装一下就没了,只能算一键安装脚本,并不足够方便和适合懒人和小白,于是自己写了一个一键管理脚本,一键安装和一键管理的区别!

更多的Shadowsocks安装教程/一键脚本请看这里:Shadowsocks指导篇
本脚本的二维码图片链接,是调用我自建的二维码API 来生成二维码图片( http://doub.pw/qr/qr.php?text=xxx )。
当访问API页面后,PHP网页文件会把 GET参数( ?text=xxx ) 传递给JS脚本,浏览器会加载JS脚本,然后由JS脚本根据 GET参数的文本 生成二维码图片!图片是在你本地浏览器中生成,服务器中不存在图片!
请确定你信任我和我的脚本,否则请不要用我的脚本,少BB!

系统要求

CentOS 6+ / Debian 6+ / Ubuntu 14.04 +
推荐Debian 7 x64,这个是我一直使用的系统,我的脚本在这个系统上面出错率最低。并且最容易安装锐速(锐速不支持OpenVZ)
CentOS根据大家的要求,加入了CentOS 6和7的支持,CentOS 7 自带防火墙问题(firewalld)自行解决,其他版本没有做测试。

脚本版本

Ver: 2.0.34
ssrmu.sh脚本是单服务器多用户脚本,使用的是 SSR服务端的MudbJSON模式,可以给每个用户(端口)设置不同的加密方式/协议/混淆/限制速度/设备数限制/可用总流量等功能。即实现单服务器多用户流量管理等功能。
而ssr.sh则是单服务器单用户脚本,使用的是 SSR服务端的单用户配置方式,即使实现了多端口,但是还算不算多用户,不支持每个用户(端口)不同的加密方式/协议/混淆等,并且无法管理流量使用。
如何选择这两个脚本?
根据你的需求选择,比如你仅仅是 一个或两个人使用,并且不需要流量管理功能,那么选择ssr.sh好了。而如果很多人使用,并且都需要限制流量来管理,那你适合使用ssrmu.sh ,所以自己看着选,多试试(两个脚本不能共存)!

脚本特点:

目前网上的各个ShadowsocksR脚本基本都是只有 安装/卸载 等基础功能,对于小白来说还是不够简单方便,要修改账号配置还要手动修改文件,所以那些ShadowsocksR脚本只能称得上一键安装脚本。既然没有我满意的ShadowsocksR一键管理脚本,那么我就自己造喽,于是特意学了Shell,然后写出来了这个ShadowsocksR一键管理脚本!
支持 限制 端口限速
支持 限制 端口设备数
支持 显示 当前连接IP
支持 显示 SS/SSR连接+二维码
支持 切换管理 单/多端口
支持 一键安装 BBR
支持 一键安装 锐速
支持 一键安装 LotServer
支持 一键封禁 垃圾邮件(SMAP)/BT/PT

安装步骤

简单的来说,如果你什么都不懂,那么你直接一路回车就可以了!
本脚本需要Linux root账户权限才能正常安装运行,所以如果不是 root账号,请先切换为root,如果是 root账号,那么请跳过!
sudo su
输入上面代码回车后会提示你输入当前用户的密码,输入并回车后,没有报错就继续下面的步骤安装ShadowsocksR。

v2.0.0 版本以后的脚本,请先卸载旧脚本ShadowsocksR服务端,再重新安装!
wget-N–no-check-certificate https://softs.fun/Bash/ssr.sh && chmod +x ssr.sh && bash ssr.sh
备用下载地址(上面的链接无法下载,就用这个):
wget-N–no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/ssr.sh && chmod +x ssr.sh && bash ssr.sh
下载运行后会提示你输入数字来选择要做什么。
输入1,就会开始安装ShadowsocksR服务端,并且会提示你输入Shadowsocks的端口/密码/加密方式/ 协议/混淆(混淆和协议是通过输入数字选择的) 等参数。
如果安装过程中报错,请看 常见问题解决方法
如果协议是origin,那么混淆也必须是plain !
点击展开 查看更多

使用说明

运行脚本,
bash ssr.sh
输入对应的数字来执行相应的命令。
 请输入一个数字来选择菜单选项
1.安装ShadowsocksR
2.更新ShadowsocksR
3.卸载ShadowsocksR
4.安装libsodium(chacha20)
————————————
5.查看账号信息
6.显示连接信息
7.设置用户配置
8.手动修改配置
9.切换端口模式
————————————
10.启动ShadowsocksR
11.停止ShadowsocksR
12.重启ShadowsocksR
13.查看ShadowsocksR日志
————————————
14.其他功能
 15.升级脚本
当前状态:已安装并已启动
当前模式:单端口
请输入数字(1-15):
当你为单端口模式时,使用7. 设置 用户配置是 修改 单端口账号配置。
当你为多端口模式时,使用7. 设置 用户配置是 添加/删除/修改 多端口账号配置。

文件位置

安装目录:/usr/local/shadowsocksr
配置文件:/etc/shadowsocksr/user-config.json

其他说明

ShadowsocksR 安装后,自动设置为 系统服务,所以支持使用服务来启动/停止等操作,同时支持开机启动。
启动 ShadowsocksR:service ssr start
停止 ShadowsocksR:service ssr stop
重启 ShadowsocksR:service ssr restart
查看 ShadowsocksR状态:service ssr status
ShadowsocksR 默认支持UDP转发,服务端无需任何设置。
本脚本已经集成了 安装/卸载 锐速(ServerSpeeder)开心版,但是是否支持请查看 Linux支持内核列表 。(锐速不支持OpenVZ)
v2.0.0 以前的旧版本下载地址:
点击展开 查看更多

ShadowsocksR目前支持的协议和混淆:

协议(Protocol):origin,auth_sha1_v4,auth_aes128_md5,auth_aes128_sha1,auth_chain_a,auth_chain_b
混淆(Obfs):plain,http_simple,http_post,random_head,tls1.2_ticket_auth,tls1.2_ticket_fastauth(需06/04日以后的服务端版本)
origin 和 plain 是原版,加粗的是推荐使用的。
如果你想要使用 tls1.2_ticket_fastauth混淆插件,那么服务端选择 tls1.2_ticket_auth,客户端选择 tls1.2_ticket_fastauth即可。
如果服务端 设置混淆参数为:tls1.2_ticket_auth_compatible (兼容原版)
那么客户端 可使用的混淆为:plain / tls1.2_ticket_auth / tls1.2_ticket_fastauth
tls1.2_ticket_auth与tls1.2_ticket_fastauth的区别为,后者不会等待服务器回应,所以不会增加延迟。适合于,因为混淆插件增加延迟的原因不得不选择原版混淆plain,但是又因为QOS等因素而处于延迟与干扰/限速等之间抉择的时候,可以选择 tls1.2_ticket_fastauth客户端混淆插件!

使用阿里云/腾讯云等存着安全组或规则组一类外部防火墙的请注意

点击展开 查看更多
因为阿里云/腾讯云的服务器还有一个外部的防火墙也就是叫 安全组或规则组。
一般来说默认是只开放22(SSH)端口,所以一些人在搭建ShadowsocksR服务端后,会出现无法访问的情况,ShadowsocksR客户端的统计窗口显示超时。
同时ShadowsocksR服务端开启详细日志模式(其他功能中)后,ShadowsocksR客户端访问ShadowsocksR账号无日志输出。

ShadowsocksR 端口限速中 单线程限速 和 端口总限速 的区别

注意:如果要使用脚本中的这个功能,需要重新下载脚本,并重装安装 2月15日 以后的ShadowsocksR服务端才行。

解决 可使用原版协议,但无法使用ShadowsocksR协议 的问题

点击展开 查看更多
如果发现Shadowsocks原版协议/混淆可以使用,而ShadowsocksR的协议/混淆无法使用,那么多半是 VPS时区问题
这个命令,我的ShadowsocksR脚本在安装的时候已经执行了,如果你发现没有执行,那你可以手动执行。
我们可以通过下面这个命令,把VPS的时区调整为北京时区,这样就避免了ShadowsocksR 协议/混淆 因为时差太大造成的无法验证。
cp/usr/share/zoneinfo/Asia/Shanghai/etc/localtime
注意,部分VPS会提示你是否覆盖文件,输入y然后回车。
如果你遇到,crontab设定的定时任务不按更换时区后的VPS时间执行,那么请看下面:
crontab设定的定时任务不按VPS的时间执行,那是因为你更换VPS时区后还需要重启crontab。
CentOS 系统:
service crond restart
Debian/Ubuntu 系统:
service cron restart

提示 Media change: please insert the disc labeled‘Debian GNU/Linux 7.0.0 Wheezy — Official amd64 CD 等信息是 apt源 的问题,更换 apt源

点击展开 查看解决办法
我发现有一些人的VPS的 apt源有问题,导致安装失败,所以我这里写上如何更换 apt源。
本步骤仅适合 Debian 系统,Ubuntu系统自行搜索 apt源。
下面的手动改的方法一些人可能嫌麻烦,所以你们可以这样字更换apt源。
依次输入就可以更换apt源了,下面的代码是以 us美国 为例,你可以自己去这里选一个近一些合适的,然后替换下面代码中 us.sources.list 的 us。
wget-N–no-check-certificate-P/etc/apt https://softs.fun/Bash/sources/us.sources.list
rm-rf/etc/apt/sources.list
cp/etc/apt/us.sources.list/etc/apt/sources.list

手动更换(上面的命令执行完毕就不要重复执行这个了)

打开你的apt源文件,
vi /etc/apt/sources.list
然后按I 键进入编辑模式,如果你没有安装vim,也无法通过apt-get install vim -y安装,那么你就只能通过SFTP下载这个文件本地编辑了。
把下面的内容复制过去,注意下面示例是美国的apt源,想要其他地区的apt源,请看:Debian全球镜像站(替换下面的ftp.us.debian.org中的us)
deb http://ftp.us.debian.org/debian/ jessie main
deb-src http://ftp.us.debian.org/debian/ jessie main
deb http://security.debian.org/ jessie/updates main contrib
deb-src http://security.debian.org/ jessie/updates main contrib
# jessie-updates, previously known as ‘volatile’
deb http://ftp.us.debian.org/debian/ jessie-updates main contrib
deb-src http://ftp.us.debian.org/debian/ jessie-updates main contrib
修改完毕之后,按ESC 键退出编辑模式,然后输入:wq保存并退出,然后再试一试apt-get update是否正常。

ShadowsocksR启动失败,日志提示:Exception: libsodium not found 的错误

这是你使用了 chacha20 系列加密方式,但是却没有安装 libsodium支持库,导致ShadowsocksR无法启动,运行脚本选择选项 4 安装 libsodium支持库即可,如果安装失败,请选择其他的加密方式,对速度影响不大。

提示wget: unknown host “softs.fun” 之类的错误

这是无法解析我的域名,多半是DNS的问题,请更换DNS为谷歌DNS。
点击展开 查看更多
echo”nameserver 8.8.8.8
nameserver 8.8.4.4″>/etc/resolv.conf
# 两行一起复制一直执行

提示 wget: command not found 的错误

这是你的系统精简的太干净了,wget都没有安装,所以需要安装wget。
点击展开 查看更多
CentOS系统:
yum install-y wget
Debian/Ubuntu系统:
apt-getinstall-y wget

升级脚本

升级脚本只需要重新下载脚本文件就可以了,会自动覆盖原文件。

定时重启

一些人可能需要定时重启ShadowsocksR服务端来保证稳定性等,所以这里用 crontab 定时。
点击展开 查看更多
crontab-e
# 首先打开定时设置,然后会出现文本编辑,按 I键 进入编辑模式,根据需求添加下下面的代码到 这个文本编辑框内!!
————
# 如果提示命令不存在,那么安装crontab:
# CentOS系统:
yum update
yum install-y crond
# Debian/Ubuntu系统:
apt-getupdate
apt-getinstall-y cron
安装并打开 crontab 后,我们根据需求添加下面的代码,添加后我们按ESC键退出编辑模式,然后输入:wq保存并退出。
# 添加定时重启任务
# 是添加到 crontab -e 文本编辑框内,而不是让你执行!
# 下面代码前面的 * * * * * 分别对应:分钟 小时 日 月 星期
102***/etc/init.d/ssr restart
# 这个代表 每天2点10分重启一次 ShadowsocksR
102*/2 * * /etc/init.d/ssr restart
# 这个代表 每隔2天的2点10分重启一次 ShadowsocksR
10*/4 * * * /etc/init.d/ssr restart
# 这个代表 每隔4小时的第10分重启一次 ShadowsocksR

本脚本只是本人的第一个Shell脚本学习练手作品,在逻辑结构上问题不少,大家遇到什么BUG请积极反馈!

Comments are closed, but trackbacks and pingbacks are open.