華為云計(jì)算 云知識 ADB方式公網(wǎng)鏈接云手機(jī)
ADB方式公網(wǎng)鏈接云手機(jī)

通過公網(wǎng)連接云手機(jī)時(shí), 彈性公網(wǎng)IP 綁定在云手機(jī)服務(wù)器上,因此需要先建立SSH隧道,即ADB方式(公網(wǎng))包括兩個(gè)步驟:建立SSH隧道;通過ADB連接云手機(jī)。

用于連接云手機(jī)的設(shè)備可以為本地設(shè)備,也可以是云上的機(jī)器,推薦您使用本地設(shè)備。本地設(shè)備的操作系統(tǒng)不限,Windows、Linux、Android OS或Mac OS均可,本節(jié)操作以Windows系統(tǒng)為例。

準(zhǔn)備工作

建立SSH隧道前,確保用來連接云手機(jī)的本地設(shè)備已安裝SSH服務(wù)(請參見如何確認(rèn)本地設(shè)備已安裝SSH服務(wù)?)。您還需要登錄云手機(jī)管理控制臺,完成如下準(zhǔn)備工作:

1、獲取云手機(jī)所在區(qū)域的項(xiàng)目ID。方法如下:

在右上角用戶名的下拉列表中,選擇“我的憑證”。

選擇“我的憑證”

在“API憑證 > 項(xiàng)目列表”中,獲取待連接的云手機(jī)所在區(qū)域的“項(xiàng)目ID”。

以“華東-上海一”為例:

在“API憑證 > 項(xiàng)目列表”中,獲取待連接的云手機(jī)所在區(qū)域的“項(xiàng)目ID”。

說明: 

若項(xiàng)目ID位數(shù)多于32位,則取前32位作為建立SSH隧道的用戶名。

2、選擇一個(gè)本地設(shè)備中任意未被占用的端口,用來和云手機(jī)建立連接。

您可以執(zhí)行netstat -an命令,查看端口占用情況:

如下圖,6667端口已被其他程序占用,而1234端口空閑。

執(zhí)行netstat -an命令,查看端口占用情況:

3、獲取云手機(jī)監(jiān)聽地址,即云手機(jī)的內(nèi)網(wǎng)IP與端口。方法如下:

如果在購買云手機(jī)服務(wù)器時(shí),在高級配置中自定義了應(yīng)用端口,這里會顯示這些端口信息。SSH隧道鑒權(quán)方式與使用默認(rèn)的ADB端口一樣,只需要將云手機(jī)監(jiān)聽地址替換為對應(yīng)端口的云手機(jī)監(jiān)聽地址即可。

若創(chuàng)建自定義應(yīng)用端口時(shí)勾選了“公網(wǎng)訪問”,則此處會顯示對應(yīng)端口的公網(wǎng)訪問地址,用戶可以通過公網(wǎng)+此端口的方式直接訪問云手機(jī),但要注意安全風(fēng)險(xiǎn)。

在云手機(jī)控制臺,選擇左側(cè)導(dǎo)航欄的“云手機(jī)管理”,單擊待連接云手機(jī)的名稱,進(jìn)入云手機(jī)詳情頁面。

在“應(yīng)用端口”區(qū)域獲取ADB應(yīng)用對應(yīng)的云手機(jī)監(jiān)聽地址。

說明: 

4、獲取云手機(jī)服務(wù)器的 公網(wǎng)IP 地址。方法如下:

在云手機(jī)控制臺,選擇左側(cè)導(dǎo)航欄的“云手機(jī)服務(wù)器管理”,單擊下拉圖標(biāo),展開云手機(jī)服務(wù)器詳情,獲取“IP”參數(shù)的取值。

獲取“IP”參數(shù)的取值

說明: 

如果有多臺云手機(jī)服務(wù)器,請根據(jù)云手機(jī)名稱來判斷云手機(jī)所屬服務(wù)器是哪一臺。例如,云手機(jī)名稱為cph-test-1-00001,那么對應(yīng)的云手機(jī)服務(wù)器名稱為cph-test-1。

5、獲取云手機(jī)服務(wù)器的密鑰對對應(yīng)的私鑰文件在本地的保存路徑,即購買云手機(jī)實(shí)例步驟7中創(chuàng)建密鑰對時(shí)保存在本地的私鑰文件路徑,例如:C:/Users/Administrator/Downloads/KeyPair-a49c.pem。路徑不區(qū)分大小寫,推薦您使用全英文路徑。

說明: 

如果云手機(jī)服務(wù)器的密鑰對對應(yīng)的私鑰文件丟失,請參考私鑰文件丟失,怎么辦?。

步驟1:建立SSH隧道

1、在本地設(shè)備打開命令提示符窗口,以Windows 10操作系統(tǒng)為例,方法如下:

同時(shí)按下“Win + R”,在打開的“運(yùn)行”對話框中輸入cmd,按“Enter”。

2、執(zhí)行以下命令,建立SSH隧道。

ssh -L 本地空閑端口:云手機(jī)監(jiān)聽地址 SSH隧道用戶名@公網(wǎng)IP地址 -i 私鑰文件路徑 -Nf

各參數(shù)說明及獲取方式如下所述:

假設(shè)本地空閑端口為1234,云手機(jī)監(jiān)聽地址為10.237.0.61:5555,SSH隧道用戶名為05e1aexxx,公網(wǎng)IP地址為xxx.xxx.xxx.xxx,私鑰文件路徑為C:/Users/Administrator/Downloads/KeyPair-a49c.pem,命令如下:

ssh -L 1234:10.237.0.54:5555 05e1aexxx@xxx.xxx.xxx.xxx -i C:/Users/Administrator/Downloads/KeyPair-a49c.pem -Nf

該命令表示從本地PC建立一個(gè)到云手機(jī)的SSH隧道,使用本地端口轉(zhuǎn)發(fā)模式,監(jiān)聽本地PC的1234端口;訪問本地PC的1234端口時(shí),通信數(shù)據(jù)將會被轉(zhuǎn)發(fā)到云手機(jī)的5555端口。

執(zhí)行命令后,SSH程序會在后臺執(zhí)行隧道的轉(zhuǎn)發(fā),執(zhí)行后無報(bào)錯(cuò)即為SSH隧道建立成功。

說明: 

建立SSH隧道的 故障排查 ,請參考如下鏈接:

    通過公網(wǎng)訪問云手機(jī)時(shí),建立SSH隧道失敗了,如何解決?

    建立SSH隧道時(shí)報(bào)錯(cuò)“too open”?

    建立SSH隧道時(shí)報(bào)錯(cuò)“Permission denied”?

    建立SSH隧道時(shí)報(bào)錯(cuò)“no match mac found”?

    本地空閑端口:用戶自由選擇的本地設(shè)備中任意未被占用的端口,通過該端口映射云手機(jī)應(yīng)用端口。獲取方式見2。

    云手機(jī)監(jiān)聽地址:云手機(jī)的內(nèi)網(wǎng)IP與端口。獲取方式見3。

    SSH隧道用戶名:云手機(jī)所在區(qū)域的項(xiàng)目ID。獲取方式見1。

    公網(wǎng)IP地址:云手機(jī)服務(wù)器的公網(wǎng)IP。獲取方式見4。

    私鑰文件路徑:云手機(jī)服務(wù)器的密鑰對對應(yīng)的私鑰文件在本地的保存路徑。獲取方式見5。

    步驟2:通過ADB連接云手機(jī)

    1、下載ADB工具。

    訪問https://developer.android.com/studio/releases/platform-tools,在頁面右上角切換語言為“English”,選擇“Download SDK Platform-Tools for Windows”。

    選擇“Download SDK Platform-Tools for Windows

    在彈出的對話框中勾選“I have read and agree with the above terms and conditions”,并單擊“DOWNLOAD ANDROID SDK PLATFORM-TOOLS FOR WINDOWS”進(jìn)行下載。

    2、下載后得到“platform-tools_r29.0.5-windows.zip”文件,解壓該zip文件至您選定的目錄,例如“C:\Users\Administrator\Downloads”。

    說明: 

    “platform-tools_r29.0.5-windows.zip”文件中的版本號“29.0.5”僅為示例,請以實(shí)際下載的版本為準(zhǔn)。

    3、打開命令提示符窗口,進(jìn)入“C:\Users\Administrator\Downloads\platform-tools”目錄。

    cd C:\Users\Administrator\Downloads\platform-tools

    打開命令提示符窗口,進(jìn)入“C:\Users\Administrator\Downloads\platform-tools”目錄

    4、執(zhí)行如下ADB命令,創(chuàng)建與云手機(jī)的ADB連接。

    adb connect 127.0.0.1:本地空閑端口

    5、檢測當(dāng)前端口是否已連接,可輸入adb devices命令檢查。

    6、執(zhí)行相關(guān)ADB命令,開始操作云手機(jī),如adb shell命令。

    7、安裝手機(jī)APK程序至云手機(jī)。

    云手機(jī)沒有自帶瀏覽器或相關(guān)應(yīng)用市場,如果您想要在云手機(jī)內(nèi)安裝APP,可以自行找一個(gè)APP的apk包使用ADB命令傳遞至云手機(jī)上去安裝。命令為:

    adb -s 127.0.0.1:本地空閑端口 install 需要安裝的APK所在路徑