LinuxベースのAzure App Serviceでは、SSHで接続してLinuxのコマンドを実行できる。一般的なSSHクライアントアプリからApp Serviceに接続する方法と注意点を説明する。
対象: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仮想マシンでもよい。
SSHクライアントアプリからApp Serviceに接続するには、Azure CLIを使って専用のリモート接続を確立する必要がある(後述)。しかし通常、Azure CLIはLinuxディストリビューションにインストールされておらず、Microsoftのリポジトリからインストールする必要がある。
Ubuntuの場合は、以下のコマンドラインでAzure CLIをインストールする。
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
他のLinuxディストリビューションでのインストール手順については、Microsoft Learn「Azure CLI を Linux にインストールする」を参照していただきたい。
この作業は1回実行すればよい(SSH接続のたびに繰り返す必要はない)。
次に、Linux環境で「az login」コマンドを実行してAzureにサインインする。その際、SSHで接続したいApp Serviceが所属しているサブスクリプションをデフォルトとして選択しておく。
az login
サインインが済んだら、SSHクライアントを実行するPC(ここではLinux環境)とApp Serviceの間で、SSHのための「リモート接続」をセットアップする。それには「az webapp create-remote-connection」コマンドを用いる。この作業なしに直接、SSHクライアントから接続することはできない。
az webapp create-remote-connection -g <App Serviceリソースグループ名> -n <App Service名> -p <ポート番号>
az webapp create-remote-connectionコマンドを実行すると、上記画面のようにSSHの接続情報が表示される。この後にSSHクライアントで接続する際には、この接続情報に従ってホストやポート番号、ユーザー名、パスワードを指定する必要がある。
「-p」オプションを指定しないと、未使用のポートが自動的に選出されて使われる。ポート番号を固定する必要がないなら、このオプションは指定しなくてよい。
このリモート接続を終了させるには、[Ctrl]+[C]キーを押して「az webapp create-remote-connection」コマンドのプロセスを終了させればよい。
リモート接続を確立したら、その際に表示された接続情報を指定しつつSSHクライアントを起動する。このとき、SSHクライアントアプリは、リモート接続を確立したのと同じPCまたは仮想マシン上で起動する必要がある(WSLの場合は、ホスト側のSSHクライアントアプリでもよい)。
Linuxの場合は以下のコマンドラインを実行する。
ssh root@127.0.0.1 -p <ポート番号>
接続後は、通常のSSHと同様に扱える。以下はtopコマンドでリソースの使用状況を表示させた例である。
Windows OSのSSHクライアントである「PuTTY」でも、特に問題なく接続できた。
一方、Windows 11標準のSSHクライアントでは、Linuxの場合と同じコマンドラインでは接続に失敗した。そこで、「-m hmac-sha1」というMAC(メッセージ認証コード)アルゴリズムを指定するオプションを付けたら接続に成功した。
Windows OS版Azure CLIでも、前述のリモート接続のための「az webapp create-remote-connection」コマンドは実行できる。しかし、UbuntuのSSHクライアントやPuTTYでは接続できなかった。Windows 11のSSHクライアントでは、何回か実行すると接続に成功する、というように安定しているとはいえない挙動を示した。
執筆時点で、このSSH接続機能は前述のようにプレビューの段階なので、正式版がリリースされれば、Windows OSでも安定したリモート接続が確立できるようになることを期待したい。
■関連リンク
Copyright© Digital Advantage Corp. All Rights Reserved.