検索
連載

【Azure】App Service on LinuxにSSHで接続する方法と注意点(WebSSH編)Tech TIPS

LinuxベースのAzure App Serviceでは、WebベースのSSHで接続してLinuxのコマンドを実行できる。その方法と注意点を説明する。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
「Tech TIPS」のインデックス

連載目次

Azure App Service SSH接続

対象:Azure App Service on Linux、Azureポータル


 Linuxベースの「Azure App Service」(App Service on Linux)を使っていて、Azureポータルなどでは不可能なLinuxそのものに対する細かい操作をしたくなったことはないだろうか?

 あるいは、Linux VM(仮想マシン)でよく実行するコマンドラインを、App ServiceのLinuxコンテナに対して実行したい、ということもあると思う。

 App Service on Linuxでも、SSHで接続してコンソールを開き、任意のコマンドラインを実行することは(多少の制限はあっても)可能だ。本Tech TIPSでは、App Service on Linuxを対象として、WebベースのSSHで接続する方法と注意点を説明する。

App ServiceにSSHで接続する

 以下では、Webブラウザを用いてWebベースのSSHでApp Serviceに接続する手順を説明する(いわゆるSSHクライアントアプリは使わない)。

App ServiceにSSHで接続する(1/2)
App ServiceにSSHで接続する(1/2)
App ServiceにSSHで接続する(2/2)
App ServiceにSSHで接続する(2/2)

■操作手順

  1. Azureポータルで対象のApp Serviceのページを開く
  2. 左メニューで[開発ツール]−[SSH]をクリックする
  3. 右ペインで[移動→]をクリックすると、新しいタブにSSH画面が表示される

 以下のURLをWebブラウザのアドレスバー(オムニボックス)に直接指定してSSH画面を開くこともできる。

https://<App Service名>.scm.azurewebsites.net/webssh/host



 WebブラウザにAzureのアカウント(MicrosoftアカウントあるいはEntra ID/Azure ADアカウント)でサインインしていない場合、ここで認証画面が表示されるので、対象のApp Serviceを管理できる権限を持ったアカウントでサインインすること。

SSH接続中のコンソール入出力をログファイルに記録する

 SSHで入力したコマンドラインやその実行結果の出力をログファイルに記録することも可能だ。

SSH接続中のコンソール入出力をログファイルに記録する(1/3)
SSH接続中のコンソール入出力をログファイルに記録する(1/3)
SSH接続中のコンソール入出力をログファイルに記録する(2/3)
SSH接続中のコンソール入出力をログファイルに記録する(2/3)
SSH接続中のコンソール入出力をログファイルに記録する(3/3)
SSH接続中のコンソール入出力をログファイルに記録する(3/3)

■操作手順

  1. SSH画面の左下隅にある[≡ Menu]をクリックしてメニューを開く
  2. Start Log]をクリックすると記録が始まる
  3. コマンドラインの入力と実行など、必要な作業を行う
  4. 作業完了後、再びメニューを開いて[Stop Log]をクリックする
  5. メニューの[Download Log]をクリックすると、「WEBSSH2-<年月日>_<時分秒>.log」という名前でログファイルがダウンロードされる

App ServiceへのSSH接続を制限するには

 Azureポータルには、MicrosoftアカウントあるいはEntra ID/Azure ADアカウントでの認証が必須とはいえ、全世界から接続できる。そのAzureポータル上で利用できるSSHについても、デフォルトでは全世界から接続可能だ。

 それが不安だという場合は、ソースIPアドレスでSSH接続を制限できる。つまり、特定のIPアドレスからの接続要求のみ許可し、その他からは拒否する、ということが可能だ。ただし、SSH以外の「高度なツールサイト」も同じく制限される。

 具体的な設定手順については、Tech TIPS「【Azure】App Serviceの『高度なツールサイト』をIPアドレス制限で守る(リソーステンプレート編)」を参照していただきたい。

【注意】環境変数に設定されている認証情報が丸見えになる

 SSHでApp Serviceに接続した場合、printenvコマンドなどで環境変数を表示させると、そこに記載されているパスワードなどの認証情報が平文で表示されてしまう。

 Tech TIPS「【Azure Key Vault】App Serviceのアプリケーション設定から『シークレット』な情報が漏れないようにする(Azureポータル編)」で説明しているように、Key Vaultを利用することで、Azureポータルを参照できても認証情報は見せないようにできる。

 しかし、この手法ではSSH接続時に認証情報を隠ぺいできず、前述のように平文で確認できてしまう。

 そのため、SSHを含む「高度なツールサイト」へのアクセス許可を与える際には、情報漏えいにつながらないかどうか十分注意した方がよいだろう。

【注意】/home以外を改変しても再起動で元に戻ってしまう

 App Serviceでは、[/home]ディレクトリ以下のファイルだけが永続的に保持される。一方、[/etc]など他のディレクトリについては、SSH接続中にいろいろ修正したとしても、コンテナのデプロイ時に元の状態へ戻ってしまう。App Serviceの再起動でも、コンテナが再デプロイされるため、同様に[/home]以外の改変は元に戻される。

 そのため、SSHで改変したファイルを一時的ではなくずっと残しておきたい場合、[/home]以下に配置する必要がある。

【注意】意図しないタイミングでSSH接続が切断されることがある

 App Service on Linuxは意図せぬタイミングで再起動が掛かることがある。例えばオートヒール(自動回復)機能を「オン」にしていると、指定の条件が満たされたときに自動で再起動が行われる。

 すると、SSH接続のセッションも切断されてしまう。しかも、そのまま待っていても自動的には再接続されず、Webブラウザで再読み込み([F5]キーあるいは[Ctrl]+[R]キーを押す)を実行する必要がある。

「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

ページトップに戻る