Azure App Service でコンテナーへの SSH セッションを開く
Secure Shell (SSH) を使って、コンテナーに対してリモートで管理コマンドを実行できます。 App Service では、Windows カスタム コンテナーでホストされているアプリに直接 SSH を行うことがサポートされています。
Windows カスタム コンテナーでは、ブラウザーの SSH セッションを機能させるために特別な設定は必要ありません。 Azure CLI を介した SSH セッションはサポートされていません。
Secure Shell (SSH) を使って、コンテナーに対してリモートで管理コマンドを実行できます。 App Service では、Linux コンテナー (組み込みまたはカスタム) でホストされているアプリに直接 SSH を行うことがサポートされています。
組み込みの Linux コンテナーには、SSH セッションを有効にするために必要な構成が既にあります。 Linux カスタム コンテナーでは、SSH セッションを有効にするために追加の構成が必要です。 「SSH を有効にする」をご覧ください。
SSH と SFTP を使用して、ローカル開発マシンからコンテナーに直接接続することもできます。
ブラウザーで SSH セッションを開く
コンテナーとの直接 SSH セッションを開くには、アプリが実行されている必要があります。
ブラウザーに次の URL を貼り付け、<app-name>
をお使いのアプリの名前に置き換えます。
https://<app-name>.scm.azurewebsites.net/webssh/host
まだ認証されていない場合、接続するには Azure サブスクリプションで認証する必要があります。 認証されると、ブラウザー内シェルが表示され、コンテナー内でコマンドを実行することができます。
Azure CLI を使用して SSH セッションを開く
TCP トンネリングを使って、開発用コンピューターと Linux コンテナーの間に認証済みの WebSocket 接続によるネットワーク接続を作成できます。 これにより、任意のクライアントから App Service で実行されているコンテナーとの SSH セッションを開くことができます。
最初に、Azure CLI をインストールする必要があります。 Azure CLI をインストールしないとどのように動作するかを確認するには、Azure Cloud Shell を開きます。
az webapp create-remote-connection コマンドを使用して、アプリへのリモート接続を開きます。 お使いのアプリの <subscription-id>、<group-name>、および <app-name> を指定します。
az webapp create-remote-connection --subscription <subscription-id> --resource-group <resource-group-name> -n <app-name> &
ヒント
コマンドの末尾の &
は、Cloud Shell を使用している場合の便宜のためにあります。 同じシェルで次のコマンドを実行できるように、プロセスをバック グラウンドで実行します。
Note
このコマンドが失敗した場合は、次のコマンドでリモート デバッグが無効になっていることを確認してください。
az webapp config set --resource-group <resource-group-name> -n <app-name> --remote-debugging-enabled=false
コマンドの出力では、SSH セッションを開くために必要な情報が示されます。
Verifying if app is running....
App is running. Trying to establish tunnel connection...
Opening tunnel on addr: 127.0.0.1
Opening tunnel on port: <port-output>
SSH is available { username: root, password: Docker! }
Ctrl + C to close
出力 (<port-output>
) で提供されるローカル ポートを使って、任意のクライアントでコンテナーとの SSH セッションを開きます。 たとえば、linux の ssh コマンドを使うと、java -version
のような 1 つのコマンドを実行できます。
ssh root@127.0.0.1 -m hmac-sha1 -p <port-output> java -version
または、完全な SSH セッションに入るには、以下だけを実行します。
ssh root@127.0.0.1 -m hmac-sha1 -p <port-output>
プロンプトが表示されたら、yes
と入力して接続を続行します。 パスワードを入力するように求められます。 前に示された Docker!
を使用します。
Warning: Permanently added '[127.0.0.1]:21382' (ECDSA) to the list of known hosts. root@127.0.0.1's password:
認証されると、セッションのようこそ画面が表示されます。
_____ / _ \ __________ _________ ____ / /_\ \___ / | \_ __ \_/ __ \ / | \/ /| | /| | \/\ ___/ \____|__ /_____ \____/ |__| \___ > \/ \/ \/ A P P S E R V I C E O N L I N U X 0e690efa93e2:~#
これでコネクタに接続されました。
top コマンドを実行してみます。 プロセスの一覧にアプリのプロセスが表示されます。 次の出力例では、PID 263
のものです。
Mem: 1578756K used, 127032K free, 8744K shrd, 201592K buff, 341348K cached CPU: 3% usr 3% sys 0% nic 92% idle 0% io 0% irq 0% sirq Load average: 0.07 0.04 0.08 4/765 45738 PID PPID USER STAT VSZ %VSZ CPU %CPU COMMAND 1 0 root S 1528 0% 0 0% /sbin/init 235 1 root S 632m 38% 0 0% PM2 v2.10.3: God Daemon (/root/.pm2) 263 235 root S 630m 38% 0 0% node /home/site/wwwroot/app.js 482 291 root S 7368 0% 0 0% sshd: root@pts/0 45513 291 root S 7356 0% 0 0% sshd: root@pts/1 291 1 root S 7324 0% 0 0% /usr/sbin/sshd 490 482 root S 1540 0% 0 0% -ash 45539 45513 root S 1540 0% 0 0% -ash 45678 45539 root R 1536 0% 0 0% top 45733 1 root Z 0 0% 0 0% [init] 45734 1 root Z 0 0% 0 0% [init] 45735 1 root Z 0 0% 0 0% [init] 45736 1 root Z 0 0% 0 0% [init] 45737 1 root Z 0 0% 0 0% [init] 45738 1 root Z 0 0% 0 0% [init]
次のステップ
質問や問題は、Azure フォーラムに投稿できます。
Web App for Containers について詳しくは、以下をご覧ください。