次の方法で共有


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

Secure Shell (SSH) を使って、コンテナーに対してリモートで管理コマンドを実行できます。 App Service では、Windows カスタム コンテナーでホストされているアプリに直接 SSH を行うことがサポートされています。

Windows カスタム コンテナーでは、ブラウザーの SSH セッションを機能させるために特別な設定は必要ありません。 Azure CLI を介した SSH セッションはサポートされていません。

Linux App Service SSH

Secure Shell (SSH) を使って、コンテナーに対してリモートで管理コマンドを実行できます。 App Service では、Linux コンテナー (組み込みまたはカスタム) でホストされているアプリに直接 SSH を行うことがサポートされています。

組み込みの Linux コンテナーには、SSH セッションを有効にするために必要な構成が既にあります。 Linux カスタム コンテナーでは、SSH セッションを有効にするために追加の構成が必要です。 「SSH を有効にする」をご覧ください。

Linux App Service SSH

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

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

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

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

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

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

SSH 接続

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 について詳しくは、以下をご覧ください。