shadowsock搭梯子 服务端: 下载一键安装脚本。wget –no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-go.sh 执行该脚本,会安装好该软件。 编辑配置文件后启动软件。/etc/shadowsocks/config.json 客户端: 检查是否能telnet通服务端端口 通了之后安装shadowsock客户端,配置服务器信息后启用系统代理,搞定(需要浏览器配置好shadowsock客户端的服务端口代理)

附件:

  1. conf.json { “server”:”0.0.0.0”, “server_port”:8989, “local_port”:1080, “password”:”anne0608young”, “method”:”aes-256-cfb”, “timeout”:600 } 2.一键安装脚本 #!/usr/bin/env bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH #=================================================================#

    System Required: CentOS, Debian, Ubuntu

    Description: One click Install Shadowsocks-go server

    Author: Teddysun

    < i@teddysun.com

    #

    Thanks: @cyfdecyf

    < https://twitter.com/cyfdecyf #

    Intro:

    https://teddysun.com/392.html # #================================================================== clear echo echo “#############################################################” echo “# One click Install Shadowsocks-go server #” echo “# Intro:

https://teddysun.com/392.html #” echo “# Author: Teddysun < i@teddysun.com

#” echo “# Github:

https://github.com/shadowsocks/shadowsocks-go #” echo “#############################################################” echo #Current folder cur_dir=pwd

Make sure only root can run our script

rootness(){ if [[ $EUID -ne 0 ]]; then echo “Error:This script must be run as root!” 1> & 2 exit 1 fi } #Check system check_sys(){ local checkType=$1 local value=$2 local release=’’ local systemPackage=’’ if [[ -f /etc/redhat-release ]]; then release=”centos” systemPackage=”yum” elif cat /etc/issue | grep -Eqi “debian”; then release=”debian” systemPackage=”apt” elif cat /etc/issue | grep -Eqi “ubuntu”; then release=”ubuntu” systemPackage=”apt” elif cat /etc/issue | grep -Eqi “centos|red hat|redhat”; then release=”centos” systemPackage=”yum” elif cat /proc/version | grep -Eqi “debian”; then release=”debian” systemPackage=”apt” elif cat /proc/version | grep -Eqi “ubuntu”; then release=”ubuntu” systemPackage=”apt” elif cat /proc/version | grep -Eqi “centos|red hat|redhat”; then release=”centos” systemPackage=”yum” fi if [[ ${checkType} == “sysRelease” ]]; then if [ “$value” == “$release” ]; then return 0 else return 1 fi elif [[ ${checkType} == “packageManager” ]]; then if [ “$value” == “$systemPackage” ]; then return 0 else return 1 fi fi }

Get version

getversion(){ if [[ -s /etc/redhat-release ]]; then grep -oE “[0-9.]+” /etc/redhat-release else grep -oE “[0-9.]+” /etc/issue fi }

CentOS version

centosversion(){ if check_sys sysRelease centos; then local code=$1 local version=”$(getversion)” local main_ver=${version%%.*} if [ “$main_ver” == “$code” ]; then return 0 else return 1 fi else return 1 fi }

is 64bit or not

is_64bit(){ if [ getconf WORD_BIT = ‘32’ ] & & [ getconf LONG_BIT = ‘64’ ] ; then return 0 else return 1 fi }

Disable selinux

disable_selinux(){ if [ -s /etc/selinux/config ] & & grep ‘SELINUX=enforcing’ /etc/selinux/config; then sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config setenforce 0 fi } get_ip(){ local IP=$( ip addr | egrep -o ‘[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}’ | egrep -v “^192.168|^172.1[6-9].|^172.2[0-9].|^172.3[0-2].|^10.|^127.|^255.|^0.” | head -n 1 ) [ -z ${IP} ] & & IP=$( wget -qO- -t1 -T2

ipv4.icanhazip.com

) [ -z ${IP} ] & & IP=$( wget -qO- -t1 -T2 ipinfo.io/ip ) [ ! -z ${IP} ] & & echo ${IP} || echo } get_char(){ SAVEDSTTY=stty -g stty -echo stty cbreak dd if=/dev/tty bs=1 count=1 2> /dev ull stty -raw stty echo stty $SAVEDSTTY }

Pre-installation settings

pre_install(){ if ! check_sys packageManager yum & & ! check_sys packageManager apt; then echo “Error: Your OS is not supported. please change OS to CentOS/Debian/Ubuntu and try again.” exit 1 fi

Set shadowsocks-go config password

echo “Please input password for shadowsocks-go:” read -p “(Default password:

teddysun.com ):” shadowsockspwd [ -z “${shadowsockspwd}” ] & & shadowsockspwd=” teddysun.com “ echo echo “—————————” echo “password = ${shadowsockspwd}” echo “—————————” echo

Set shadowsocks-go config port

while true do echo -e “Please input port for shadowsocks-go [1-65535]:” read -p “(Default port: 8989):” shadowsocksport [ -z “${shadowsocksport}” ] & & shadowsocksport=”8989” expr ${shadowsocksport} + 0 &

/dev ull if [ $? -eq 0 ]; then if [ ${shadowsocksport} -ge 1 ] & & [ ${shadowsocksport} -le 65535 ]; then echo echo “—————————” echo “port = ${shadowsocksport}” echo “—————————” echo break else echo “Input error, please input correct number” fi else echo “Input error, please input correct number” fi done echo echo “Press any key to start…or Press Ctrl+C to cancel” char=get_char #Install necessary dependencies if check_sys packageManager yum; then yum install -y wget unzip gzip curl elif check_sys packageManager apt; then apt-get -y update apt-get install -y wget unzip gzip curl fi echo }

Download shadowsocks-go

download_files(){ cd ${cur_dir} if is_64bit; then if ! wget -c

http://dl.teddysun.com/shadowsocks/shadowsocks-server-linux64-1.2.1.gz ; then echo “Failed to download shadowsocks-server-linux64-1.2.1.gz” exit 1 fi gzip -d shadowsocks-server-linux64-1.2.1.gz if [ $? -eq 0 ]; then echo “Decompress shadowsocks-server-linux64-1.2.1.gz success” else echo “Decompress shadowsocks-server-linux64-1.2.1.gz failed” exit 1 fi mv -f shadowsocks-server-linux64-1.2.1 /usr/bin/shadowsocks-server else if ! wget -c

http://dl.teddysun.com/shadowsocks/shadowsocks-server-linux32-1.2.1.gz ; then echo “Failed to download shadowsocks-server-linux32-1.2.1.gz” exit 1 fi gzip -d shadowsocks-server-linux32-1.2.1.gz if [ $? -eq 0 ]; then echo “Decompress shadowsocks-server-linux32-1.2.1.gz success” else echo “Decompress shadowsocks-server-linux32-1.2.1.gz failed” exit 1 fi mv -f shadowsocks-server-linux32-1.2.1 /usr/bin/shadowsocks-server fi

Download start script

if check_sys packageManager yum; then if ! wget –no-check-certificate -O /etc/init.d/shadowsocks

https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-go ; then echo “Failed to download shadowsocks-go auto start script!” exit 1 fi elif check_sys packageManager apt; then if ! wget –no-check-certificate -O /etc/init.d/shadowsocks

https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-go-debian ; then echo “Failed to download shadowsocks-go auto start script!” exit 1 fi fi }

Config shadowsocks

config_shadowsocks(){ if [ ! -d /etc/shadowsocks ]; then mkdir -p /etc/shadowsocks fi cat > /etc/shadowsocks/config.json < < -EOF { “server”:”0.0.0.0”, “server_port”:${shadowsocksport}, “local_port”:1080, “password”:”${shadowsockspwd}”, “method”:”aes-256-cfb”, “timeout”:600 } EOF }

Firewall set

firewall_set(){ echo “firewall set start…” if centosversion 6; then /etc/init.d/iptables status > /dev ull 2> & 1 if [ $? -eq 0 ]; then iptables -L -n | grep -i ${shadowsocksport} > /dev ull 2> & 1 if [ $? -ne 0 ]; then iptables -I INPUT -m state –state NEW -m tcp -p tcp –dport ${shadowsocksport} -j ACCEPT iptables -I INPUT -m state –state NEW -m udp -p udp –dport ${shadowsocksport} -j ACCEPT /etc/init.d/iptables save /etc/init.d/iptables restart else echo “port ${shadowsocksport} has been set up.” fi else echo “WARNING: iptables looks like shutdown or not installed, please manually set it if necessary.” fi elif centosversion 7; then systemctl status firewalld > /dev ull 2> & 1 if [ $? -eq 0 ]; then firewall-cmd –permanent –zone=public –add-port=${shadowsocksport}/tcp firewall-cmd –permanent –zone=public –add-port=${shadowsocksport}/udp firewall-cmd –reload else echo “Firewalld looks like not running, try to start…” systemctl start firewalld if [ $? -eq 0 ]; then firewall-cmd –permanent –zone=public –add-port=${shadowsocksport}/tcp firewall-cmd –permanent –zone=public –add-port=${shadowsocksport}/udp firewall-cmd –reload else echo “WARNING: Try to start firewalld failed. please enable port ${shadowsocksport} manually if necessary.” fi fi fi echo “firewall set completed…” }

Install Shadowsocks-go

install(){ if [ -f /usr/bin/shadowsocks-server ]; then echo “shadowsocks-go install success!” chmod +x /usr/bin/shadowsocks-server chmod +x /etc/init.d/shadowsocks if check_sys packageManager yum; then chkconfig –add shadowsocks chkconfig shadowsocks on elif check_sys packageManager apt; then update-rc.d -f shadowsocks defaults fi /etc/init.d/shadowsocks start if [ $? -eq 0 ]; then echo “Shadowsocks-go start success!” else echo “Shadowsocks-go start failed!” fi else echo echo “Shadowsocks-go install failed!” exit 1 fi clear echo echo “Congratulations, Shadowsocks-go install completed!” echo -e “Your Server IP: \033[41;37m $(get_ip) \033[0m” echo -e “Your Server Port: \033[41;37m ${shadowsocksport} \033[0m” echo -e “Your Password: \033[41;37m ${shadowsockspwd} \033[0m” echo -e “Your Local Port: \033[41;37m 1080 \033[0m” echo -e “Your Encryption Method: \033[41;37m aes-256-cfb \033[0m” echo echo “Welcome to visit: https://teddysun.com/392.html “ echo “Enjoy it!” echo }

Uninstall Shadowsocks-go

uninstall_shadowsocks_go(){ printf “Are you sure uninstall shadowsocks-go? (y ) “ printf “\n” read -p “(Default: n):” answer [ -z ${answer} ] & & answer=”n” if [ “${answer}” == “y” ] || [ “${answer}” == “Y” ]; then ps -ef | grep -v grep | grep -i “shadowsocks-server” > /dev ull 2> & 1 if [ $? -eq 0 ]; then /etc/init.d/shadowsocks stop fi if check_sys packageManager yum; then chkconfig –del shadowsocks elif check_sys packageManager apt; then update-rc.d -f shadowsocks remove fi

delete config file

rm -rf /etc/shadowsocks

delete shadowsocks

rm -f /etc/init.d/shadowsocks rm -f /usr/bin/shadowsocks-server echo “Shadowsocks-go uninstall success!” else echo echo “Uninstall cancelled, nothing to do…” echo fi }

Install Shadowsocks-go

install_shadowsocks_go(){ rootness disable_selinux pre_install download_files config_shadowsocks if check_sys packageManager yum; then firewall_set fi install }

Initialization step

action=$1 [ -z $1 ] & & action=install case “$action” in install|uninstall) ${action}_shadowsocks_go ;; *) echo “Arguments error! [${action}]” echo “Usage: basename $0 [install|uninstall]” ;; esac