問題描述
中國區的Azure App Service(應用服務)已經支援建立Docker並選擇Linux環境。在使用中,我們可以繼續通過kudu站點的方式登入檢視站點的一些日誌及部署檔案。它的登入方式與App Service Windows方式一樣(通過門戶目錄的Advance Tool登入,或在URL中新增.SCM登入)。如想要跟多的操作及Linux SSH方式,在微軟的官方站點中,推薦有兩種登入方式:
-
在瀏覽器中開啟 SSH 會話
-
從遠端 shell 開啟 SSH 會話(https://docs.azure.cn/zh-cn/app-service/configure-linux-open-ssh-session#open-ssh-session-from-remote-shell)
對於第一種,從門戶左側目錄“SSH”登入到SSH視窗時,則一直出現CREDENTIALS提示,始終無法成功登入。錯誤截圖如下:
問題原因
在瀏覽器中通過開發者工具(F12)檢視到錯誤發生在載入Jquery 1.11.0檔案,Azure App Service使用的JS地址為 https://code.jquery.com/jquery-1.11.0.min.js,經驗證,該地址無法在國內網路正常訪問。
檢視錯誤資訊截圖:
國內網路無法訪問:(https://code.jquery.com/jquery-1.11.0.min.js)
替換方案
在瞭解到根本原因後,替代方案有兩種。
- 一是通過VPN,如能正常訪問 https://code.jquery.com/jquery-1.11.0.min.js則可以解決此問題。
- 二是使用遠端SSL的方式登入。檢視詳細的步驟見文件(https://docs.azure.cn/zh-cn/app-service/configure-linux-open-ssh-session#open-ssh-session-from-remote-shell)。
以下部分為在使用遠端SSL的方式時,在Powershell中執行的命令及截圖:
第一步:使用Powershell登入到中國區並選擇訂閱
az cloud set --name AzureChinaCloud az login az account set --subscription 'select subscription'
- 第一行命令設定登入的環境。如不設定,預設為Global Azure
- 第二行命令通過瀏覽器開啟登入頁面。登入成功後,會列出所有的訂閱號。
- 第三行命令設定目標訂閱
第二步:使用 az webapp create-remote-connection 命令開啟到應用的遠端連線
完整命令為:
az webapp create-remote-connection --subscription <subscription-id> --resource-group <resource-group-name> -n <app-name> &
第三步:開啟新的Powershell視窗,建立SSH連線
通過第二步中的埠60812,建立SSH連線,命令為:ssh root@127.0.0.1 -p 10812
參考資料
以互動方式登入: https://docs.azure.cn/zh-cn/cli/authenticate-azure-cli?view=azure-cli-latest
在 Azure 應用服務中開啟 Linux 容器的 SSH 會話: https://docs.azure.cn/zh-cn/app-service/configure-linux-open-ssh-session#open-ssh-session-in-browser
Nginx的Dockerfile內容:https://hub.docker.com/layers/nginx/library/nginx/latest/images/sha256-d73056bfea356376bf2464e544cc5508d8670f51b56b17a76638ee5433fb8e9f?context=explore
開啟SSH服務,在自定義映象時新增ssh server的部分: https://docs.microsoft.com/en-us/azure/app-service/configure-custom-container?pivots=container-linux#enable-ssh
參考微軟官方給出的映象進行構建自定義映象: https://github.com/Azure-App-Service/tomcat/blob/dev/8.5-jre8/Dockerfile