本文以 DigitalOcean + ss/ssr 配置加密通道***为例,记录了手动搭梯子的过程。
启动一个服务器实例的操作可以参考我的这篇博文,这里主要介绍 ss/ssr 的服务搭建过程。

首先 SSH 登陆到 VPS:

ssh <username>@<server>

这里用户名推荐用 root,因为配置过程中有很多操作需要管理员权限。
登陆成功后,良好的习惯是更新 apt 代码仓库和升级应用:

apt update && apt upgrade

然后就可以开始安装 ShadowSocks 的过程了(以 Python 版为例)

apt install python-pip
pip install https://github.com/shadowsocks/shadowsocks/archive/master.zip -U

注意:这里一定要使用管理员权限安装,不然后面在输入命令 ssserver 的时候会报错:

-bash: ssserver: command not found

ssserver 安装完成后,我们需要几个加密工具:

apt install python-m2crypto

wget https://github.com/jedisct1/libsodium/releases/download/1.0.17/libsodium-1.0.17.tar.gz
tar xvf libsodium-1.0.17.tar.gz && cd libsodium-1.0.17/
./configure
make && make check
make install

安装部分到这里就结束了。接下来是一些 ss 服务的配置操作。
新建一个 json 文件 ss.json

{
  "server": "xxx.xxx.xxx.xxx",
  "server_port": 1234,
  "local_port": 56789,
  "password": "your password",
  "timeout": 600,
  "method": "aes-256-gcm",
  "remarks": "name of this configuration"
}

并将该文件拷贝到 /etc/ss.json

大功告成!现在我们可以启动 ss 服务了:

ssserver -c /etc/ss.json -d start

注:OpenSSL 1.1.0 以上版本环境中会遇到报错

AttributeError: /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1: undefined symbol: EVP_CIPHER_CTX_cleanup

解决方法参考自这里,简单来说,我们只需要将文件 /usr/local/lib/python2.7/dist-packages/shadowsocks/crypto/openssl.py 中的 libcrypto.EVP_CIPHER_CTX_cleanup 替换为 libcrypto.EVP_CIPHER_CTX_reset

如果一切正常,ssserver 将显示信息:

INFO: loading config from /etc/ss.json
yyyy-mm-dd h:min:s INFO     loading libcrypto from libcrypto.so.1.1
started

另外两个常用 ssserver 命令:

ssserver -c /etc/ss.json -d stop
ssserver -c /etc/ss.json -d restart

VPS + ssserver 的部署过程到此就完成了,选个喜欢的 ss 客户端开始访问互联网吧~~

Reference


Written with StackEdit.

Digitalocean + ss 搭建加密通信代理服务器的更多相关文章

  1. ZMQ示例:使用 curve 进行加密通信

    1. ZMQ 官方文档 ZMQ 的官方文档中关于 curve 的介绍如下: Client and server roles A socket using CURVE can be either cli ...

  2. 对Elastic集群内部配置TLS加密通信及身份验证

    1.介绍 官方宣布从6.8和7.1开始,免费提供多项安全功能.其中包括tls加密通信,基于角色访问控制等功能. 可以使用企业CA证书来完成这一步骤,但是一般情况下,我们可以通过elasticsearc ...

  3. Security基础(三):OpenSSL及证书服务、邮件TLS/SSL加密通信

    一.OpenSSL及证书服务 目标: 本案例要求熟悉OpenSSL工具的基本使用,完成以下任务操作: 使用OpenSSL加密/解密文件 搭建企业自有的CA服务器,为颁发数字证书提供基础环境 方案: 使 ...

  4. 开源项目SMSS发开指南(四)——SSL/TLS加密通信详解

    本文将详细介绍如何在Java端.C++端和NodeJs端实现基于SSL/TLS的加密通信,重点分析Java端利用SocketChannel和SSLEngine从握手到数据发送/接收的完整过程.本文也涵 ...

  5. bugzilla4的xmlrpc接口api调用实现分享: xmlrpc + https + cookies + httpclient +bugzilla + java实现加密通信下的xmlrpc接口调用并解决登陆保持会话功能

    xmlrpc .  https . cookies . httpclient.bugzilla . java实现加密通信下的xmlrpc接口调用并解决登陆保持会话功能,网上针对bugzilla的实现很 ...

  6. Crypto API加密通信流程

    应用程序使用Crypto API进行加密通信的一般步骤如下: 1,include wincrypt.h 2,调用CryptAcquireContext()获得某个CSP模块中的密钥容器(key con ...

  7. 单片机上使用TEA加密通信(转)

    源:单片机上使用TEA加密通信 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:WIN7 开发环境:MDK4.72 单片机:STM32 说 ...

  8. SSL及其加密通信过程

    SSL及其加密通信过程 什么是SSL SSL英文全称Secure Socket Layer,安全套接层,是一种为网络通信提供安全以及数据完整性的安全协议,它在传输层对网络进行加密.它主要是分为两层: ...

  9. Python3+ssl实现加密通信

    一.说明 1. python标准库ssl可实现加密通信 2. ssl库底层使用openssl,做了面向对像化改造和简化,但还是可以明显看出openssl的痕迹 3. 本文先给出python实现的soc ...

随机推荐

  1. [JSOI2018]潜入行动

    题目 我好菜啊,嘤嘤嘤 原来本地访问数组负下标不会报\(RE\)或者\(WA\),甚至能跑出正解啊 这道题还是非常呆的 我们发现\(k\)很小,于是断定这是一个树上背包 发现在一个点上安装控制器并不能 ...

  2. /dev/urandom非阻塞的发生器

    JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/./urandom" /dev/urandom   /dev/urandom ...

  3. Python文件和流

    #coding = utf-8 from pprint import pprint import fileinput #read(n) f = open(r'E:\test_dir\somefile. ...

  4. 关于Koala 中文编译出错

    关于koala: 我们知道koala是一个前端预处理器语言图形编译工具,支持Less.Sass.Compass.CoffeeScript,帮助web开发者更高效地使用它们进行开发.跨平台运行,完美兼容 ...

  5. Python高级编程和异步IO并发编程

    第1章 课程简介介绍如何配置系统的开发环境以及如何加入github私人仓库获取最新源码. 1-1 导学 试看 1-2 开发环境配置 1-3 资源获取方式第2章 python中一切皆对象本章节首先对比静 ...

  6. 《关于ES6的学习》

    var JavaScript中,我们通常说的作用域是函数作用域,使用var声明的变量,无论是在代码的哪个地方声明的,都会提升到当前作用域的最顶部,这种行为叫做变量提升(Hoisting) 也就是说,如 ...

  7. Php5.6.31连接sqlserver 2008R2数据库问题sqlsrv(php5.3及以上版本)与mssql(php5.3以前版本)②

    Php5.6.31连接sqlserver 2008R2数据库 1.环境配置 Win7(win8.1)  64 +Apache2.4 + PHP5.6.31 + SQL Server 2008 R2数据 ...

  8. java ssm 后台框架平台 项目源码 websocket即时聊天发图片文字 好友群组 SSM源码

    官网 http://www.fhadmin.org/D 集成安全权限框架shiro  Shiro 是一个用 Java 语言实现的框架,通过一个简单易用的 API 提供身份验证和授权,更安全,更可靠E ...

  9. ios学习路线—Objective-C(装箱和拆箱)

    概述 从前面的博文我们也可以看到,数组和字典中只能存储对象类型,其他基本类型和结构体是没有办法放到数组和字典中的,当然你也是无法给它们发送消息的也就是说有些NSObject的方法是无法调用的,这个时候 ...

  10. Linux磁盘与文件系统管理(一)

    fdisk 常用的磁盘分区工具,受mbr分区表的限制,只能给小于2TB的磁盘划分分区,如果使用fdisk对大于2TB的磁盘进行分区,虽然可以分区,但只能识别2T的空间,一般使用parted分区工具 - ...