基本概念
本文介绍使用云手机服务器服务时需要了解的基本概念。
服务器
服务器是用来提供云手机的物理服务器。云手机服务器目前以服务器为单位购买,您只需要指定具体的服务器类型、实例规格、手机镜像、所需要的网络配置等,即可获得一台服务器,以及相应数量的云手机。
手机开数
手机开数是云手机的一种规格参数,指一台服务器可以虚拟出的云手机数量。例如:手机开数为60,表示购买一台服务器,实际可以得到60台云手机。
云手机镜像
云手机镜像指手机运行的操作系统,如Android。目前仅提供谷歌原生Android操作系统AOSP 7.1.1。后续可按照用户的需求提供华为EMUI系统的云手机,但是其他第三方厂家如小米ROM、苹果iOS等等出于商业授权、架构不一致缘由,我们不能提供。
SSH隧道
SSH隧道即SSH端口转发,在SSH客户端与SSH服务端之间建立一个隧道,将网络数据通过该隧道转发至指定端口,从而进行网络通信。SSH隧道自动提供了相应的加密及解密服务,保证了数据传输的安全性。
SSH隧道有三种端口转发模式:本地端口转发(Local Port Forwarding)、远程端口转发(Remote Port Forwarding)以及动态端口转发(Dynamic Port Forwarding)。对于本地/远程端口转发,两者的方向恰好相反。连接云手机时,使用的是本地端口转发,因此本文着重介绍本地端口转发的工作原理。
假设本地主机A1为SSH客户端,远端云主机B1为SSH服务端。从A1主机通过SSH登录B1主机,指定不同的端口转发选项(-L、-R和-D),即可在A1与B1之间建立SSH隧道,从而进行不同的端口转发。
- 应用场景
远端云主机B1上运行了一个服务,端口为2000,本地主机A1需要访问这个服务。假设云主机B1的IP为122.x.x.x,则该服务的访问地址为:http://122.x.x.x:2000
- 为什么需要本地端口转发?
一般来讲,云主机的防火墙默认只开启了22端口,如果需要访问2000端口,则需要修改防火墙。为了保证安全,防火墙需要配置允许访问的IP地址。但是,云主机的公网IP通常是网络提供商动态分配的,如果变更公网IP地址,防火墙配置就需要经常修改,造成不必要的麻烦。
- 什么是本地端口转发?
本地端口转发,是将发送到本地端口的请求,转发到目标端口,这样就可以通过访问本地端口,来访问目标端口的服务。使用-L选项,就可以指定需要转发的端口,语法如下:
ssh -L 本地端口:目标地址:目标端口
例如:
ssh -L 3000:targethost:2000 root@122.x.x.x 表示在本地主机A1登录远端云主机B1,通过本地端口转发,将发送到本地主机A1端口3000的请求,转发到远端云主机B1的2000端口。
这样,在本地主机A1上可以通过访问http://122.x.x.x:2000来访问远端云主机B1上的服务。
- 扩展应用
以上语法中,目标地址也可以是其他主机的地址,以连接云手机场景为例,目标地址为云手机的私有IP地址,本地主机A1为本地设备,远端云主机B1为云手机服务器,那么建立SSH隧道的命令为:
ssh -L 本地端口:云手机私有IP地址:目标端口 用户名@服务器的公网IP地址
另外,建立隧道时常用的选项还有-N、-f等。
- -N:表示建立SSH隧道以后不连接到SSH服务端,通常与“-f”选项连用。
- -f:表示在后台运行SSH隧道,通常与“-N”选项连用。
ADB
Android Debug Bridge(简称ADB),是一个Android操作系统与桌面电脑间沟通的命令行工具,是安卓系统自带的独有应用。您可以通过ADB命令执行各种设备操作(例如安装和调试应用)。
了解更多ADB命令,请参考“常用ADB命令”,或者访问Android官网:https://developer.android.com/studio/command-line/adb。