[公告] 新增大杀器番墙 https://dashaqi.cf/2017/10/13/easy-deploy-dashaqi-fanqiang-gfw-press/
Blog

史上最详尽最简单明了从零开始在 Vultr 上使用docker快速搭建 Shadowsocks 服务端

本文介绍如何注册 Vultr 云平台账户、创建 PayPal 账户并绑定银行卡、下单购买 Vultr 主机 并部署 Shadowsocks 服务端。

依照本文教程进行 Shadowsocks server 配置时,不需要任何电脑基础,只需要动动你的鼠标。

注册 Vultr 帐号

如果已有 Vultr 帐号,可忽略本节,跳到 下面的“配置支付方式” 。

直接点击打开 Vultr 网站 https://www.vultr.com/?ref=6920741-3B

图 1. Vultr 主页

 点击进入后按下图输入邮箱和要设置的密码(最少10位,要同时有数字和大小写字母),最后点击Create Account 注册,。

图 2. 创建 Vultr 帐号

接着进入邮箱,查收确认邮件。

图 3. 到邮箱确认注册

点击邮件中的确认按钮,通过验证并自动登录到 Vultr。

配置支付方式

在购买 VPS 之前,需要配置付款方式,才能进行支付。

支付方式有 3 种:

  • 信用卡
  • PayPal
  • Alipay /支付宝
  • Bitcoin

如果没有信用卡或不想使用信用卡的话,可选择 PayPal 或者支付宝。

Bitcoin 目前似乎还不支持,我也没有比特币,不作介绍。

(1) 你可以选择用支付宝来激活, 选中金额$10 ,然后点击蓝色方框内的pay with Alipay 进行支付. (如下图)

(2) 或者用 PayPal 。

创建 PayPal 账户

如果已有绑定银行卡的 PayPal 账户,可忽略本节,跳到 “充值到 Vultr”。

PayPal 账户无需实名认证,可以使用银联的借记卡。

注册过程就不细说了,创建一个购物账户,姓名和地址不必真实。

绑定银行卡

注册 PayPal 后,在 “钱包” -> “信用卡和借记卡” 处选择 “关联卡” ,填入卡号和银行卡关联 的手机号。

图 4. 绑定银行卡到 PayPal

接着会收到一条银联的验证短信,填入验证码,完成绑定。

绑定完成后不需要充值到 PayPal,等付款时会自动充值的。

PayPal 付完款后可以随时解除银行卡关联。如要解除绑定,点击 PayPal 关联的银行卡,然后 点击 “移除卡” 即可。

银联卡需要是下面类型之一的才能绑定成功。

  • 中国工商银行、中国建设银行、中国农业银行 、中国银行、交通银行、华夏银行、平安银行、 兴业银行、宁波银行、潍坊银行、哈尔滨银行、珠海农信、尧都农信、武汉市商业银行、 晋城市商业银行、顺德农商银行发行的银联借记卡;
  • 中国工商银行、中国银行、交通银行、中信银行、招商银行、广东发展银行、浦东发展银行 发行的银联信用卡。

使用银联卡付款前,请您先在银行开通该卡的网上支付功能。

银联卡只能用以进行在线购物。

充值到 Vultr

在创建 Vultr 主机前,需要先充值一定金额到 Vultr 帐号。这里充值 5 美元。

图 5. 用 PayPal 充值到 Vultr 账户

在支付页面,同意并继续。

图 6. 用 PayPal 支付

接着会再要求登入一次 PayPal 账户并填写验证码,完成付款。如果过程中出现任何问题请打下面的客服电话(客服讲中文),输入自己的动态识别码  https://www.paypal.com/selfhelp/contact/call )

创建 Vultr 主机

付款完成后,将自动进入购买主机页面。

图 7. 创建主机

主机配置可参考下表。

表 1. 主机配置参考

项目
Server Location Asia / Singapore
Server Type CentOS 7 x64
Server Size 25 GB SSD / 1 CPU / 1024MB Memory / 1000GB Bandwidth
Additional Features
Startup Script
SSH Keys
Server Hostname & Label

检查配置无误后,点击 “Deploy Now”。

不出意外,将会有一台主机在部署。

图 8. 创建中的主机

连接到主机

点击主机右侧 “…” 展开菜单,选择 “Server Details” 可以看到这台主机的一些信息。包括 这台主机的公网地址(IP Address)、登录用户名(Username)和密码(Password)。 记下这三项,后面所说的登录 VPS 要填写的用户名、密码,就是这一套。

图 9. 主机详细信息

如果你用的电脑是 Linux 或 MacOS 系统。则可以直接用 SSH 连接过去。

ssh [email protected]
# 输入 yes 接受指纹
# 输入 VPS 主机的密码

将这里 112.113.114.115 替换为 VPS 主机的公网 IP。

如果你用的电脑是 Windows 系统,最好安装 Putty / XShell 这样的工具,或者也可以用 Vultr 提供的网页控制台。

图 10. 打开 Vultr 控制台

在网页控制台,输入 VPS 的用户名和密码。

图 11. Vultr 网页控制台

吐槽一下,这个网页控制台 5 毛水平,连粘贴都不支持。

登录后,会出现命令行界面,比如执行 free -h 能够显示内存占用情况。接下来将在这里执行 命令安装 Docker 并启动 Shadowsocks 服务端。

图 12. Linux 中连接到 VPS

出于安全考虑,截图中 IP 等信息已被遮盖。

配置 Shadowsocks 服务端

和别的教程不一样的是,这里配置服务端,无需下载和运行脚本,也无需修改什么配置文件。只需要 下面两步,就能启动 Shadowsocks 服务端。

安装 Docker

Docker 是一种通用的用于打包、发布、运行应用程序的容器引擎,更多介绍可 查阅 《What is Docker?》。

在线下载 Docker 安装脚本并执行。

curl https://get.docker.com/ | sh

出现下面信息,说明已经安装完成。执行 docker version 可查看版本信息。

图 13. 在 VPS 中安装 Docker

启用 Docker daemon 进程,并加入开机启动项。

systemctl start docker && systemctl enable docker

启动 ssserver

如果想要启动一个 ssserver(即 Shadowsocks server),可以直接运行下面命令。

docker run -d --restart=always \
    -p 8388:8388 fanach/ssserver -p 8388 -k abc123

这样,在后台将会有一个 ssserver 的容器在运行。执行 docker ps 查看。

图 14. 启动 Shadowsocks 容器

接着,可以通过服务器地址、端口 8388、密码 abc123 以及默认加密方式 aes-256-cfb 去连接了,跳到 “客户端连接与验证”。

这里端口、密码和加密方式可以自己设置。

命令解释

docker run -d --restart=always \
    -p 8388:8388 fanach/ssserver -p 8388 -k abc123

上面那条 docker run 命令执行后,将会做下面事情。

  1. 下载 fanach/ssserver 这个镜像;
  2. 根据给的端口、密码等参数,在后台运行一个 ssserver 容器。

这里 -d 是指在后台运行。

--restart=always 是指在容器发生异常退出时自动重新启动。

-p 8388:8388, 前一个 8388 是称为主机端口,后一个 8388 是称为容器端口。

最后面还有个 -p 8388 是容器中 ssserver 程序的参数,即容器中 ssserver 监听的端口 为 8388。容器端口和 ssserver 监听端口必须相同。

-k abc123 为密码。

如果要设定加密方式,可用 -m 参数,如 -m chacha20

所有支持的加密方式如下

  • aes-128-cfb
  • aes-192-cfb
  • aes-256-cfb
  • aes-128-ctr
  • aes-192-ctr
  • aes-256-ctr
  • des-cfb
  • bf-cfb
  • cast5-cfb
  • rc4-md5
  • chacha20
  • chacha20-ietf
  • salsa20

各种加密方式的区别,需要自己查阅了。

如果需要再启动一个 ssserver ,换一个主机端口,如 8399,再运行一次命令即可。

docker run -d --restart=always \
    -p 8399:8388 fanach/ssserver -p 8388 -k abc456

如果对镜像 fanach/ssserver 有兴趣,可到点击 这里 到 DockerHub 查看。 Dockerfile 开源于 fanach/dockerfile-ssserver

状态查询

基本信息

执行 docker ps -a 可查询所有容器(包括已退出的)的简要信息。第一列为容器 ID。

图 15. Docker 容器

日志查询

执行 docker logs -f 并跟上容器 ID 查询服务端日志。

[[email protected] ~]# docker logs -f aaa89aea2169
2017/06/03 12:21:34 server listening port 8388 ...
2017/06/03 12:48:42 creating cipher for port: 8388

流量查询

执行 docker stats 并跟上容器 ID 查询容器资源使用情况。

图 16. 查看容器资源用量

其中 NET I/O 分别为这个 ssserver 容器输入和输出的流量。

如果想要查看整个 VPS 流量使用情况,到 Vultr 主机详细信息页面查看。

客户端连接与验证

Android 用户见: 《Android 上使用 Shadowsocks 教程

iPhone / iPad 用户见: 《iPhone/iPad 上使用 Shadowsocks 教程

Windows 用户见: 《Windows 上使用 Shadowsocks 教程

MacBook 用户见: 《Macbook 上使用 Shadowsocks 教程

Linux 用户见: 《Linux 上使用 Shadowsocks 教程

其他一些过程记录(拓展部分)

修改密码

如果觉得 Vultr 自动生成的密码太长太复杂不好记。可以修改登录密码。

SSH 进入主机控制台,并运行命令:

$ passwd root
Changing password for root.
Current password: (输入原密码)
New password: (输入新密码)
Retype new password: (再次输入新密码)

修改后的密码自己要牢记,如果遗忘,Vultr 似乎没有办法重置,只能重装 VPS 系统了。

安全配置

尽管修改了密码,使用用户名、密码方式登录主机也并不安全。尤其是在修改密码后,设置了简单 的密码,那更危险了。我第二天登录时,发现有 4000 多次登录失败。假如密码被试对了,那骇客 就可以对这台主机做任何操作了。

Last failed login: Sun Jun  4 15:06:48 UTC 2017 from 61.177.172.56 on ssh:notty
There were 4728 failed login attempts since the last successful login.

一个好的方法是禁用密码登录,而是只使用密钥登录。这里密钥是指用 OpenSSL 工具生成的非对称密钥对。

** 为了安全,推荐禁止密码登录,只允许使用私钥登录。**

添加公钥

生成密钥对,添加公钥到受信任的密钥中,并保留私钥。

$ ssh-keygen
(一路回车,将在 ~/.ssh/ 下生成 id_rsa 和 id_rsa.pub 两个文件,分别为私钥和公钥。)

$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys

复制私钥并妥善保存到自己的电脑上。

禁止通过密码登录

$ vi /etc/ssh/sshd_config
# 查找并修改下面两项
PasswordAuthentication no // 禁止使用基于口令认证的方式登陆
PubkeyAuthentication yes // 允许使用基于密钥认证的方式登陆

在执行下面命令之前,确保私钥已经保存到自己的电脑(自己的 Windows / Linux / MacOS 电脑, 而不是 VPS),否则重启 sshd 服务后,将无法通过密码再连接到 VPS,而只能用私钥连接。

$ systemctl restart sshd
# 重启 sshd 服务

假如保存下来的私钥文件名为 id_rsa.vultr,那后面要通过 SSH 连接 VPS 时,执行下面命令 即可。

$ ssh -i id_rsa.vultr [email protected]

将 112.113.114.115 替换为你的 VPS 公网 IP。

Windows 用户可下载并学习 XShell 的使用,XShell 实现了 SSH 具有图形化配置界面。

创建 SWAP

为了防止内存溢出导致主机重启,可创建一个 2048M 的 SWAP 文件 /swapfile 。

$ dd if=/dev/zero of=/swapfile bs=1024k count=2048
$ chmod 600 /swapfile
$ mkswap /swapfile
$ swapon /swapfile

Tips

  • 如果不是用 root 用户,需要在部分命令之前加上 sudo

修改历史

  • 2017.08.05 使用 Vultr Affiliate 链接
  • 2017.06.17 修复 go 版 ssserver 对安卓不兼容问题(默认镜像改为 fanach/ssserver )。
  • 2017.06.08 添加 swap 说明。
  • 2017.06.04 添加拓展部分:安全配置。

没有评论

Leave a Reply