Azure App Service でコンテナーへの SSH セッションを開く

Secure Shell (SSH) は、コンテナーに対してリモートで管理コマンドを実行するために使用できます。 App Service では、コンテナーにホストされているアプリに直接 SSH サポートを提供します。

ブラウザーで SSH セッションを開く

コンテナーとの直接 SSH セッションを開くには、アプリが実行されている必要があります。

ブラウザーに次の URL を貼り付け、<app-name> をお使いのアプリの名前に置き換えます。

https://<app-name>.scm.azurewebsites.net/webssh/host

まだ認証されていない場合、接続するには Azure サブスクリプションで認証する必要があります。 認証されると、ブラウザー内シェルが表示され、コンテナー内でコマンドを実行することができます。

SSH connection

Linux App Service SSH

SSH と SFTP を使用して、ローカル開発マシンからコンテナーに直接接続することもできます。

ブラウザーで SSH セッションを開く

コンテナーとの直接 SSH セッションを開くには、アプリが実行されている必要があります。

ブラウザーに次の URL を貼り付け、<app-name> をお使いのアプリの名前に置き換えます。

https://<app-name>.scm.azurewebsites.net/webssh/host

まだ認証されていない場合、接続するには Azure サブスクリプションで認証する必要があります。 認証されると、ブラウザー内シェルが表示され、コンテナー内でコマンドを実行することができます。

SSH connection

カスタム Docker イメージで SSH サポートを使用する

カスタム コンテナーでの SSH の構成に関するページを参照してください。

リモート シェルから SSH セッションを開く

Note

現在、この機能はプレビュー段階にあります。

TCP トンネリングを使用して、認証済みの WebSocket 接続経由で開発用マシンと Web App for Containers 間にネットワーク接続を作成できます。 これにより、任意のクライアントから 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 セッションを開くために必要な情報が示されます。

Port 21382 is open
SSH is available { username: root, password: Docker! }
Start your favorite client and connect to port 21382

ローカル ポートを使用して、任意のクライアントでコンテナーとの SSH セッションを開きます。 次の例では、既定の ssh コマンドを使用しています。

ssh root@127.0.0.1 -p <port>

プロンプトが表示されたら、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 について詳しくは、以下をご覧ください。