Outline on Google cloud

本文主要参考了: https://fenghe.us/2019-gcp-outline-server-setup-tutorial/ ,文字和图片等资料也多引用于此,在此深表感谢。

后面增加了一些内容,如:将outline用于shadowsocks,在Windows下面用Putty创建密钥并连接 SSH 、更改Outline 默认端口、使用WinSCP传输文件等。

一、创建outline防火墙规则

创建一个outline网络组,稍后将应用于创建的VM实例上,以满足outline官方要求的开放所有端口(实际上开放控制端、服务端连接这两个端口就可以,开放全部端口只是便于操作)。

从左边的侧边栏里找到Firewall rules(防火墙规则)进入。

在上方选择CREATE FIREWALL RULE(创建防火墙规则)。

Name栏里输入outline。(我已经创建过相同名字网络组,因此有warning)

outline

Target tags(目标标签)栏内输入outline。

outline target tag

Source IP ranges(源IP地址)栏内输入0.0.0.0/0。(针对服务器的公网IP)

ip range

在Protocols and ports(协议及端口)栏内选择Allow all

最后点击Create(创建)以生成该网络组。

二、创建虚拟机实例

在侧边栏选择COMPUTE -> Compute Engine -> VM Instances

点击上方CREATE INSTANCE

vm instances
create vm instance
👬

Region(区域)选项中选择对于中国大陆比较友好的Taiwan(台湾), Hong Kong(香港)或Tokyo(东京)。

region
虚拟机区域选择

在Boot disk(系统启动盘)选项卡中,默认系统是Debian,单击Change变更默认选项。

选择Ubuntu 18.04 LTS,单击Select(选择)。

select Ubuntu as OS

Firewall(防火墙)选项卡中,单击Management开头的蓝色文字

Management -> Networking选项卡中的Network tags一栏内输入我们在第一步创建的 outline并且回车。

networking

单击左下角的Create(创建),就会在你的账户的相应Project(工程)内生成一个实例。

create vm instance

三、连接实例

有两种办法可以连接到我们创建的主机,即用GCP自带的SSH工具和用第三方SSH工具。自带的SSH需要翻墙并使用浏览器登入到GCP控制台,第三方SSH有可能不需要翻墙就能使用。

本节中我们将能得到主机的外部IP和SSH用户名。

(一)控制台内置SSH

详见下图。


注意上图,上图中的外部IP就是我们主机的IP地址,以后连接SSH或者Outline需要这个地址。

如上图,点击SSH会进入标准SSH连接,如下图。

注意上图,下面红圈中的绿色字体:用户名@实例名,这个用户名(图中bxxxxo)我们下面用来创建SSH密钥。

(二)Windows下面使用Putty

1、使用Putty生成密钥

  1. 下载 puttygen.exe
  2. 运行 PuTTYgen。在本例中,只需运行所下载的 puttygen.exe 文件即可。系统随即打开一个窗口,您可在其中配置自己的密钥生成设置。
  3. 点击 Generate 并按照屏幕上的说明生成新密钥。在大多数情况下,使用默认参数就可以,但您必须生成至少有 2048 位的密钥。密钥生成完成后,该工具将显示您的公钥值。
  4. 非常重要:在 Key comment 部分中,将现有文本替换成要为其应用密钥的用户的用户名。(见上面(一)用自带SSH中,最下面的用户名)。
  5. (可选)您可输入一个 Key passphrase 来保护您的密钥。
  6. 点击 Save private key,以将您的私钥写入扩展名为 .ppk 的文件中。
  7. 点击 Save public key,将您的公钥写入文件以备稍后使用。暂时让 PuTTYgen 窗口保持打开状态。注意:如果您使用 PuTTYgen 创建了 SSH 密钥,则在 PuTTYgen 之外的工具中打开默认的 SSH 公钥文件时,该文件的格式将出现错误。
  8. PuTTYgen 屏幕的顶部显示有格式正确的公钥:此公钥的结构如下:ssh-rsa [KEY_VALUE] [USERNAME]其中:
    • [KEY_VALUE] 是您生成的密钥值。
    • [USERNAME] 是此密钥要应用到的用户。
PuTTYgen 公钥的屏幕截图

2、查看Putty生成的密钥

如果您使用 PuTTYgen 工具在 Windows 工作站上创建了密钥,则您的公钥文件和私钥文件按以下格式保存在您指定的位置:

  • 公钥:[PUBLIC_KEY_FILENAME]
  • 私钥:[PRIVATE_KEY_FILENAME].ppk

其中,[PUBLIC_KEY_FILENAME] 和 [PRIVATE_KEY_FILENAME] 分别是 SSH 公钥和私钥的文件名,它们已在首次保存密钥时设置。

使用 PuTTYgen 创建的默认 SSH 公钥应具有以下格式:

ssh-rsa [KEY_VALUE] [USERNAME]

其中:

  • [KEY_VALUE] 是 SSH 公钥值。
  • [USERNAME] 是实例中您为其应用该密钥的用户。

要查看具有正确格式的 PuTTYgen SSH 公钥,请执行以下操作:

  1. 运行 PuTTYgen。如果您没有 PuTTYgen,请下载并运行 puttygen.exe
  2. 点击 Load 以选择并打开 SSH 公钥文件。
  3. 加载公钥文件后,您可以在 PuTTYgen 屏幕的顶部看到格式正确的 SSH 公钥值:
PuTTYgen 公钥的屏幕截图

3、增加项目密钥

见下图,在项目级增加元数据中SSH密钥。

点击【修改】,并选择【增加一项】, 此时会打开一个文本框,把第一步中创建的私钥(格式为:ssh-rsa [KEY_VALUE] [USERNAME])粘贴进去并保存。

4、使用Putty连接实例

  1. 启动 putty.exe 以打开 PuTTY。系统将打开连接配置窗口。
  2. 在连接配置页面的 Host Name 字段中,按以下格式输入与 SSH 密钥关联的用户名和要连接到的实例的外部 IP 地址:[USERNAME]@[EXTERNAL_IP_ADDRESS]其中:
    • [USERNAME] 是连接到该实例的用户的用户名。此值必须是您在创建 SSH 密钥时指定的用户名。
    • [EXTERNAL_IP_ADDRESS] 是要连接到的实例的外部 IP 地址。例如,请参考以下屏幕截图:
将主机名字段设置为 jane_doe@203.0.113.2
3
  1. 在左侧的 Category 菜单中,导航至 Connection > SSH > Auth
  2. 在 Private key file for authentication 字段中,浏览到您的私钥文件所在的位置。例如,请参考以下屏幕截图:
在私钥文件字段中设置 my-ssh-key.ppk 文件的路径。

点击 Open 以打开一个与您的实例连接的终端。连接后,使用此终端在您的实例上运行命令。使用完实例后,使用 exit 命令断开与实例的连接。

四、安装Outline

我们将会使用Outline作为翻墙的软件,这个软件的厉害之处罗列如下(谷歌开发的):

  • 一行代码配置完服务器
  • 管理端可以创建分享链接,分享给亲朋好友使用,你还可以通过管理端监控每个人的使用流量
  • 用户端范围广,创建的分享链接的同时也生成了兼容Shadowsocks的链接sh

(一)下载管理端

  1. macOS管理端
  2. Windows 管理端

(二)运行管理端

选择 [Google Cloud Platform],点左下面的【+】,增加服务器。

(三)执行自动安装脚本

1、你会看到第一栏里面是Log into your server, and run this command。我们接下来要做的就是在我们的服务器里执行这一行代码。

用上面介绍和两种连接SSH方法之一均可以连接到我们的主机,然后把第一步的代码( sudo bash -c “$(wget -qO- https://raw.githubusercontent.com/Jigsaw-Code/outline-server/master/src/server_manager/install_scripts/install_server.sh)” )完整地copy到主机上执行。

2、执行成功后,屏幕上会出现绿色的一行字,如第二步中显示,类似于:{”apiURL”:”…………}

把这行字完整地copy下来,粘贴到第二步中的文本框中。

3、点【Done】就完成了服务器的设置。

五、使用和分享服务器ss链接

列表里面第一个My access key是你的也就是管理员的密钥,你点一下右边图标按照指示就可以开始使用了。

Connections那一页可以设置Access Keys,分享给不同的人使用。 在Add new key之后在每一个创建的新用户。后面会有一个“分享”的按钮,点一下之后会出现以下界面,COPY INVITATION之后就可以把它分享给亲朋好友使用了,你还能实时看到他们当月用了多少流量!

1、常规方法

得到分享链接的人点击第二个链接就可以按照指示安装Outline客户端。

第一个链接(ss开头)是Shadowsocks软件可以识别的一个分享链接,可以复制之后直接从Shadowsocks的小飞机那里右击导入,手机端也可以类似操作。

用Outline有一个好处,那就是它的IOS客户端是免费的(尽管需要非中国大陆Apple ID)。

点击上面那个图中分享按钮后出现的页面

2、ss链接直接导入

可以从上图看到,有一个以ss开头的链接,没错那是一个ss(shadowsocks)的加密链接,是可以直接导入大部分的ss客户端的(包括outline client在内),可以直接复制后导入ss客户端。

在Outline Client的话就可以直接点右上角加号后粘贴,它会自动识别添加。

3、ss链接解码

此部分内容来处: https://xiequan.info/outline%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/

特此感谢。

解码后可以得到加密方式密码,配合我们之前的服务器IP地址outline端口(默认是25701)。这样,就得到了Shadowsocks客户端可以利用的服务器配置。

github:https://github.com/Jigsaw-Code/outline-client

点击右上角加号粘贴复制下面字符串即可使用

ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTptQXN2dkNyVzZQRnY=@134.209.12.18:46631/?outline=1

当然outline的配置文件也可以给shadowsocks使用

我们复制 中间 Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTptQXN2dkNyVzZQRnY=

然后对中间字符串进行base64解码

点击这里可以进行在线解码:http://tool.oschina.net/encrypt?type=3

七、修改OUTLINE服务器的默认端口

此部分内容来自: https://www.iteait.com/archives/495 在此表示感谢。

用Outline-Manager部署的outline服务器端,默认端口是25701。使用几天后出现了TCP阻断。具体现象是ping能ping通(icmp 正常),但shadowsocks 客户端显示也是已连接,但没有任何数据发出或收到(tcp 端口被封)。

目前outline manager版本无法修改安装时默认生成的access port。如果要修改服务器端口,需要修改 /opt/outline/perisister_state/shadowbox_config.json和shadowbox_server_config.json配置 文件 。把 shadowbox_config.json 及shadowbox_server_config.json文件里的端口改成其它端口,重启服务器($sudo reboot)后就能正常连接了。

我这个版本主机没有vi/vim命令,只好通过WinSCP把文件下到本地,修改好再上传回去。

而且, /opt/outline/perisister_state/ 是普通用户不能访问的,要切换成su才行。

八、使用WinSCP连接主机

可以通过WinSCP连接主机,上传或者下载文件。

1、 输入主机IP和用户名,增加节点。

2、提供私钥

如下图,把之前Putty生成的私钥匙提供给WinSCP。

3、以su身份登录

为了登录时的身份是su,需要做些配置。

见下图。注意,SFTP server的位置不同的系统位置不一样。我们主机Ubuntu的位置如下所示。

4、login 即可

One thought on “Outline on Google cloud”

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

You are commenting using your WordPress.com account. Log Out /  更改 )

Google photo

You are commenting using your Google account. Log Out /  更改 )

Twitter picture

You are commenting using your Twitter account. Log Out /  更改 )

Facebook photo

You are commenting using your Facebook account. Log Out /  更改 )

Connecting to %s