
# 基本概念
本文介绍使用云手机服务器服务时需要了解的基本概念。
#### 服务器
服务器是用来提供云手机的物理服务器。云手机服务器目前以服务器为单位购买，您只需要指定具体的服务器类型、实例规格、手机镜像、所需要的网络配置等，即可获得一台服务器，以及相应数量的云手机。具体请参见[购买云手机服务器](https://support.huaweicloud.com/usermanual-cph/cph_ug_0002.html)。
#### 手机开数
手机开数是云手机的一种规格参数，指一台服务器可以虚拟出的云手机数量。例如：手机开数为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命令执行各种设备操作（例如安装和调试应用）。
![](https://support.huaweicloud.com/productdesc-cph/public_sys-resources/note_3.0-zh-cn.png)
了解更多ADB命令，请参考"[常用ADB命令](https://support.huaweicloud.com/cph_faq/cph_faq_0027.html)"，或者访问Android官网：<https://developer.android.com/studio/command-line/adb>。
