在AWS免费EC2上搭建Ss服务器端实现教程-2-ss安装
注
s-h-a-d-o-w-s-o-c-k-s本文全部全部简写为ss。
前言
对于一个程序员来说,经常要去的网站包括github,stackoverflow,google等等,可是有一点让人非常不方便的就是,大陆的长城防火墙(GFW),导致有时候这些网站上不去或者就算上去了,也特别卡。以前在市面上还能买到一些工具,现在是越来越少而且网速也不是很稳定而且还要花钱,所以,如果你和我一样不满足上述那些服务,又不怕麻烦的话,这里有一份详细而对小白友好的折腾指南。
ss简介
ss是由Clowwindy 开发的一款软件,其作用本来是加密传输资料。当然,也正因为它加密传输资料的特性,使得 GFW 没法将由它传输的资料和其他普通资料区分开来,也就不能干扰我们访问那些「不能访问」的网站了。
SS 的初始版本是使用 Python 语言开发的,而后通过开源社区的贡献,又有了很多不同语言、环境、平台下的实现:有 C#、Java、JavaScript、Go 等语言实现的,还适配了 Windows、OS X、Linux、Android、iOS、OpenWRT(主流路由器固件之一)等主流平台……所以 SS 完全是一个多语言、多环境、跨平台的开源项目。
更多详细资料可以参考维基百科,在这里不方便一一赘述。
由于github上的源码已经不再维护,不过还有一些fork,比如ssr-backup
还有一个ssr,SSR是breakwa11发起的ss分支,在ss的基础上增加了一些数据混淆方式,称修复了部分安全问题并可以提高QoS优先级。后来贡献者Librehat也为ss补上了一些此类特性,甚至增加了类似Tor的可插拔传输层功能。不过后来也已经不再维护。
运行原理
一般来说,我们上网都是简单而直接的,用户的请求通过互联网发送到服务提供方,服务提供方直接将信息反馈给用户
但是如果被墙了之后,每当用户需要获取信息,都经过了 GFW,GFW将它不喜欢的内容统统过滤掉,于是客户当触发 GFW 的过滤规则的时候,就会收到 Connection Reset 这样的响应内容,而无法接收到正常的内容
聪明的人们想到了利用境外服务器代理的方法来绕过 GFW 的过滤,其中包含了各种HTTP代理服务、Socks服务、VPN服务… 其中以 ssh tunnel 的方法比较有代表性
- 首先用户和境外服务器基于 ssh 建立起一条加密的通道 2-3) 用户通过建立起的隧道进行代理,通过 ssh server 向真实的服务发起请求 4-5) 服务通过 ssh server,再通过创建好的隧道返回给用户
由于 ssh 本身就是基于 RSA 加密技术,所以 GFW 无法从数据传输的过程中的加密数据内容进行关键词分析,避免了被重置链接的问题,但由于创建隧道和数据传输的过程中,ssh 本身的特征是明显的,所以 GFW 一度通过分析连接的特征进行干扰,导致 ssh 存在被定向进行干扰的问题
于是 clowwindy 同学分享并开源了他的解决方案
简单理解的话,ss 是将原来 ssh 创建的 Socks5 协议拆开成 server 端和 client 端,所以下面这个原理图基本上和利用 ssh tunnel 大致类似
1、6) 客户端发出的请求基于 Socks5 协议跟 ss-local 端进行通讯,由于这个 ss-local 一般是本机或路由器或局域网的其他机器,不经过 GFW,所以解决了上面被 GFW 通过特征分析进行干扰的问题 2、5) ss-local 和 ss-server 两端通过多种可选的加密方法进行通讯,经过 GFW 的时候是常规的TCP包,没有明显的特征码而且 GFW 也无法对通讯数据进行解密 3、4) ss-server 将收到的加密数据进行解密,还原原来的请求,再发送到用户需要访问的服务,获取响应原路返回
服务端安装
如果服务端安装的是ss,没有混淆插件和协议插件,如果是ssr则有,如果不设置为origin和plain的话,则只有ssr客户端才能连接成功,ss客户端连接不成功,所以为了兼容,最好设置为origin和plain
如果服务端安装的是ss,没有混淆插件和协议插件,如果是ssr则有,如果不设置为origin和plain的话,则只有ssr客户端才能连接成功,ss客户端连接不成功,所以为了兼容,最好设置为origin和plain
如果服务端安装的是ss,没有混淆插件和协议插件,如果是ssr则有,如果不设置为origin和plain的话,则只有ssr客户端才能连接成功,ss客户端连接不成功,所以为了兼容,最好设置为origin和plain
更多安装方法可以参考下面两篇,里面说的比较详细。
-
手动安装ss版
Debian / Ubuntu:
apt-get install python-pip
pip install shadowsocks
CentOS:
yum install python-setuptools && easy_install pip
pip install shadowsocks
windows安装请参考
ss windows
安装好了,可以直接使用
ssserver -p 443 -k password -m aes-256-cfb
# 后台运行
sudo ssserver -p 443 -k password -m aes-256-cfb --user nobody -d start
# 停止
sudo ssserver -d stop
#检查日志
sudo less /var/log/shadowsocks.log
也可以直接写好配置/etc/shadowsocks.json
{
"server":"my_server_ip",
"server_port":8388,
"local_address": "127.0.0.1",
"local_port":1080,
"password":"mypassword",
"timeout":300,
"method":"aes-256-cfb",
"fast_open": false
}
# 开始运行
ssserver -c /etc/shadowsocks.json
# 后台运行
ssserver -c /etc/shadowsocks.json -d start
ssserver -c /etc/shadowsocks.json -d stop
如何配置更多可以参考shadowsocks.json
-
手动安装 SSR服务端
-
一键部署ssr代码版本一
yum -y install wget
wget --no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocksR.sh
chmod +x shadowsocksR.sh
./shadowsocksR.sh 2>&1 | tee shadowsocksR.log
演示:
输入密码
输入设置的端口:
选择想设置的加密方式,括号里面是默认的加密方式,想设置默认的话直接按回车键。这里选择数字2(和默认一样)的aes-256-cfb的加密方式
选择想设置的协议插件,默然的是origin(支持SS客户端),我们选择SSR客户端的协议插件:3
选择想设置的混淆插件,默然的是plain(支持SS客户端)
按照如下提示,按任意键进行自动部署
上图表示部署成功。从上往下依次为SSR帐号的IP、端口、密码、协议插件、混淆插件和加密方式。
最后可以重启服务器确保部署生效。重启需要在命令栏里输入reboot ,输入命令后稍微等待一会服务器就会自动重启,一般重启过程需要2~5分钟,重启过程中Xshell会自动断开连接,等VPS重启好后才可以用Xshell软件进行连接。如果部署过程中卡在某个位置超过10分钟,可以用xshell软件断开,然后重新连接你的ip,再复制代码进行部署。
这个脚本的图文演示就结束了,图中的IP仅作演示用,教程发布后会失效。有人想了,我以后有想修改密码或者端口的需求怎么办?这个脚本修改密码和端口不是很方便,需要把最初的部署代码重新输入一遍,即从头到尾部署一遍即可。
-
一键部署ssr代码版本二(推荐使用,这个脚本方便以后想修改密码、端口什么的,而且功能更多。)
# CentOS/Debian/Ubuntu SsR单/多端口一键管理脚本:
yum -y install wget
wget -N --no-check-certificate https://softs.fun/Bash/ssr.sh && chmod +x ssr.sh && bash ssr.sh
# 备用下载地址:
yum -y install wget
wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/ssr.sh && chmod +x ssr.sh && bash ssr.sh
复制上面的代码到VPS服务器里,安装脚本后,以后只需要运行这个快捷命令就可以出现下图的界面进行设置,快捷管理命令为:bash ssr.sh
如上图出现管理界面后,输入数字1来安装SSR服务端。如果输入1后不能进入下一步,那么请退出xshell,重新连接vps服务器,然后输入快捷管理命令bash ssr.sh 再尝试。
根据上图提示,依次输入自己想设置的端口和密码 (密码建议用复杂点的字母组合,图中的密码只是作为演示用),回车键用于确认
如上图,选择想设置的加密方式,比如10,按回车键确认
接下来是选择协议插件,如下图:
选择并确认后,会出现上图的界面,提示你是否选择兼容原版,这里的原版指的是SS客户端,可以根据需求进行选择,演示选择n
之后进行混淆插件的设置。 注意:有的地区需要把混淆设置成plain才好用。因为混淆不总是有效果,要看各地区的策略的,有时候不混淆(plain)让其看起来像随机数据更好。(2017.12.1最新补充:图中演示的tls 1.2_ticket_auth已失效,会出现断流的情况,可以换用其它的混淆方式,或者不混淆,设置成plain)
进行混淆插件的设置后,会依次提示你对设备数、单线程限速和端口总限速进行设置,默认值是不进行限制,个人使用的话,选择默认即可,即直接敲回车键。
之后代码就正式自动部署了,到下图所示的位置,提示你下载文件,输入:y
耐心等待一会,出现下面的界面即部署完成:
客户端安装
- windows安装
ss-windows
ss-qt5 - mac安装
SsX-NG - android安装
ss-android - ios安装
ss-iOS
potatso - linux安装
ss-qt5
也可以直接使用ss的local端:
sslocal -s 服务器地址 -p 服务器端口 -l 本地端端口 -k 密码 -m 加密方法
# 或者写好配置文件
sslocal -c /etc/shadowsocks/config.json
# 配置文件的写法
{
"server":"remote-shadowsocks-server-ip-addr",
"server_port":443,
"local_address":"127.0.0.1",
"local_port":1080,
"password":"your-passwd",
"timeout":300,
"method":"chacha20-ietf",
"fast_open":false,
"workers":1
}
-
openWrt
openwrt-ss -
其他安装源(其他个人fork并编译的,安全性未知)
windows
mac
多平台
android
多平台
更多平台请参见
Ports-and-Clients
如果是linux系统,记得要去设置>网络>网络代理
里面进行设置下,如下图
浏览器安装switchyOmega
switchyOmega是Chrome & Firefox 浏览器上的一个代理扩展程序,可以轻松快捷地管理和切换多个代理设置。这样你就可以直接在浏览器上直接切换代理或者不使用代理了。
下载地址1:
官网
下载地址2:
github
具体使用方法请自行百度。