検索
連載

【Azure】WebではなくSSHクライアントからApp Service on Linuxに接続するTech TIPS

LinuxベースのAzure App Serviceでは、SSHで接続してLinuxのコマンドを実行できる。一般的なSSHクライアントアプリからApp Serviceに接続する方法と注意点を説明する。

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

連載目次

SSHクライアントアプリからAzure App Service on Linuxに接続するには

対象:Azure App Service on Linux、SSHクライアントアプリ


 Tech TIPS「【Azure】App Service on LinuxにSSHで接続する方法と注意点(WebSSH編)」では、Webブラウザを介してLinuxベースの「Azure App Service」(App Service on Linux)にSSHで接続する方法を紹介した。

 しかし、筆者の個人的な感想では、Webブラウザ経由だとレスポンスが若干遅く感じられる。また、普段使っているSSHクライアントアプリのショートカットキーなどが使えない点も気になるところだ。

 まだプレビューの段階だが、実はAzure App Service on LinuxにはSSHクライアントアプリから接続するための機能がある。本Tech TIPSではその利用方法と注意点を説明する。

 ただし執筆時点では、Windows OSでは不安定だったので、ここではLinux環境(Ubuntu Desktop)を利用する方法を紹介する。WSL(Windows Subsystem for Linux)でもHyper-V上のLinux仮想マシンでもよい。

■執筆時のOS/ツールのバージョン

  • Azure CLI: Ver. 2.68.0
  • SSHクライアント: OpenSSH 9.6p1 Ubuntu-3ubuntu13.4、OpenSSH for Windows 9.5p1
  • Ubuntu Desktop: 24.04.1 LTS(Windows 11上のWSLにインストール)
  • Windows 11: Pro 24H2
  • PuTTY: 0.81-ranvis2

Linux環境にAzure CLIをインストールする

 SSHクライアントアプリからApp Serviceに接続するには、Azure CLIを使って専用のリモート接続を確立する必要がある(後述)。しかし通常、Azure CLIはLinuxディストリビューションにインストールされておらず、Microsoftのリポジトリからインストールする必要がある。

 Ubuntuの場合は、以下のコマンドラインでAzure CLIをインストールする。

curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash



WSL版Ubuntu 24 LTSにAzure CLIをインストールしているところ
WSL版Ubuntu 24 LTSにAzure CLIをインストールしているところ

 他のLinuxディストリビューションでのインストール手順については、Microsoft Learn「Azure CLI を Linux にインストールする」を参照していただきたい。

 この作業は1回実行すればよい(SSH接続のたびに繰り返す必要はない)。

Linux環境のAzure CLIでAzureにサインインする

 次に、Linux環境で「az login」コマンドを実行してAzureにサインインする。その際、SSHで接続したいApp Serviceが所属しているサブスクリプションをデフォルトとして選択しておく。

az login



Linux環境のAzure CLIでAzureにサインインする(1/3)
Linux環境のAzure CLIでAzureにサインインする(1/3)
Linux環境のAzure CLIでAzureにサインインする(2/3)
Linux環境のAzure CLIでAzureにサインインする(2/3)
Linux環境のAzure CLIでAzureにサインインする(3/3)
Linux環境のAzure CLIでAzureにサインインする(3/3)

Linux環境のAzure CLIでSSHのためのリモート接続を確立する

 サインインが済んだら、SSHクライアントを実行するPC(ここではLinux環境)とApp Serviceの間で、SSHのための「リモート接続」をセットアップする。それには「az webapp create-remote-connection」コマンドを用いる。この作業なしに直接、SSHクライアントから接続することはできない。

az webapp create-remote-connection -g <App Serviceリソースグループ名> -n <App Service名> -p <ポート番号>



Linux環境のAzure CLIでSSHのためのリモート接続を確立する
Linux環境のAzure CLIでSSHのためのリモート接続を確立する

 az webapp create-remote-connectionコマンドを実行すると、上記画面のようにSSHの接続情報が表示される。この後にSSHクライアントで接続する際には、この接続情報に従ってホストやポート番号、ユーザー名、パスワードを指定する必要がある。

 「-p」オプションを指定しないと、未使用のポートが自動的に選出されて使われる。ポート番号を固定する必要がないなら、このオプションは指定しなくてよい。

 このリモート接続を終了させるには、[Ctrl]+[C]キーを押して「az webapp create-remote-connection」コマンドのプロセスを終了させればよい。

SSHクライアントからApp Serviceに接続する

 リモート接続を確立したら、その際に表示された接続情報を指定しつつSSHクライアントを起動する。このとき、SSHクライアントアプリは、リモート接続を確立したのと同じPCまたは仮想マシン上で起動する必要がある(WSLの場合は、ホスト側のSSHクライアントアプリでもよい)。

 Linuxの場合は以下のコマンドラインを実行する。

ssh root@127.0.0.1 -p <ポート番号>



UbuntuのSSHクライアントからApp Serviceに接続する
UbuntuのSSHクライアントからApp Serviceに接続する

 接続後は、通常のSSHと同様に扱える。以下はtopコマンドでリソースの使用状況を表示させた例である。

App Serviceでtopコマンドを実行したところ
App Serviceでtopコマンドを実行したところ

 Windows OSのSSHクライアントである「PuTTY」でも、特に問題なく接続できた。

Windows OS上でPuTTYからApp Serviceに接続したところ
Windows OS上でPuTTYからApp Serviceに接続したところ

 一方、Windows 11標準のSSHクライアントでは、Linuxの場合と同じコマンドラインでは接続に失敗した。そこで、「-m hmac-sha1」というMAC(メッセージ認証コード)アルゴリズムを指定するオプションを付けたら接続に成功した。

Windows 11のSSHクライアントからApp Serviceに接続したところ
Windows 11のSSHクライアントからApp Serviceに接続したところ

【注意】Windows OS版Azure CLIではSSH接続が不安定!?

 Windows OS版Azure CLIでも、前述のリモート接続のための「az webapp create-remote-connection」コマンドは実行できる。しかし、UbuntuのSSHクライアントやPuTTYでは接続できなかった。Windows 11のSSHクライアントでは、何回か実行すると接続に成功する、というように安定しているとはいえない挙動を示した。

Windows OS版Azure CLIでSSHのためのリモート接続を確立してみる
Windows OS版Azure CLIでSSHのためのリモート接続を確立してみる
Windows 11のSSHクライアントから接続しようとするも安定しなかった
Windows 11のSSHクライアントから接続しようとするも安定しなかった

 執筆時点で、このSSH接続機能は前述のようにプレビューの段階なので、正式版がリリースされれば、Windows OSでも安定したリモート接続が確立できるようになることを期待したい。

「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

ページトップに戻る