みなさんこんにちは。 以前、Azure以外の場所にある「サーバー」をAzure Arcに接続する方法について以下のブログ記事でご紹介いたしました。
今回はAzure Arcに接続したサーバー(Azure Arc対応サーバー)に対しSSH接続してみたいと思います。 本機能はAzure Arc対応サーバーがWindowsでもLinuxでも利用することが可能です。 本ブログ記事ではWindowsのAzure Arc対応サーバーに対するSSH接続についてご説明したいと思います。
なお、本ブログ記事執筆時点でAzure Arc対応サーバーへのSSH接続はプレビュー状態になっています。
Azure Arc対応サーバーへのSSH接続 機能概要
もともとWindows環境ではOpenSSHをインストールすることでSSH接続することが可能です。(WindowsにおけるSSH利用の詳細についてはこちらをご参照ください。)
Azureの場合、Azure CLIにSSH接続するためのコマンドとしてaz sshコマンド(ssh拡張機能)があります。 az ssh arcコマンドを実行することでAzure Arcを介してAzure Arc対応サーバーへSSH接続することが可能です。 Azure Arcを介してのアクセスであるため、VPNを張るといった準備は不要です。(az ssh arcコマンドを実行する端末がAzure Arc対応サーバーのIPアドレスに到達できるようにしておく必要はありません。)
Azure Arc対応サーバーにSSH接続するための準備
本ブログ記事ではWindowsのAzure Arc対応サーバーにSSH接続する様子をご紹介いたします。
検証環境
今回は以下のようにオンプレミスに存在するAzure Arc対応サーバーに対して、Mac上からAzure Arcを介してSSH接続してみます。
※ Azure Arc対応サーバーにSSHで接続する際の要件についてはこちらをご参照ください。
今回利用する環境ではWindows Server 2022をAzure Arc対応サーバーとしています。 本サーバーはオンプレミスに存在しています。
今回利用するサブスクリプションではリソースプロバイダー "Microsoft.HybridConnectivity"が登録済みになっています。
なお、Mac上にAzure CLIをインストールしてあります。(Azure CLIのインストールについてはこちらをご参照ください。)
Azure Arc対応サーバーにOpenSSHをインストール
前提条件としてAzure Arc対応サーバー上でsshdサービスが有効になっている必要があるため、ここではMicrosoft Learnの記載に従ってAzure Arc対応サーバーにOpenSSH Serverをインストールします。
はじめにAzure Arc対応サーバー上で管理者としてPowerShellを起動し、以下のコマンドによりOpenSSHのインストール状況を確認します。
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
今回利用する環境ではOpenSSH Serverが未インストールであることが確認できましたので、以下のコマンドを実行してOpenSSH Serverをインストールします。
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
OpenSSH Server がインストールできましたので、sshdサービスを起動します。 さらにここではスタートアップの種類を「自動」にしています。
Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'
Azure Arc対応サーバーのConnected Machineエージェントに対する設定
Azure Arc対応サーバー上で管理者としてPowerShellを起動し、以下のコマンドを実行します。 azcmagent configコマンドはConnected Machineエージェントの設定を行うコマンドです。 ここではSSH接続に利用するポートとして22を指定しています。 コマンド構文についてはこちらをご参照ください。
azcmagent config set incomingconnections.ports 22
以下のコマンドを実行すると設定内容を確認することが可能です。
azcmagent config list
接続エンドポイントを作成
SSHで接続するAzure Arc対応サーバーの接続エンドポイントを作成します。 ここではCloud Shell (Bash)を利用しています。(PowerShellのコマンド構文についてはこちらをご参照ください。)
az rest --method put --uri https://management.azure.com/subscriptions/<subscription>/resourceGroups/<resourcegroup>/providers/Microsoft.HybridCompute/machines/<arc enabled server name>/providers/Microsoft.HybridConnectivity/endpoints/default?api-version=2021-10-06-preview --body '{"properties": {"type": "default"}}'
以下のコマンドによりエンドポイントを確認できます。
az rest --method get --uri https://management.azure.com/subscriptions/<subscription>/resourceGroups/<resourcegroup>/providers/Microsoft.HybridCompute/machines/<arc enabled server name>/providers/Microsoft.HybridConnectivity/endpoints/default?api-version=2021-10-06-preview
SSH接続元にAzure CLI拡張機能をインストール
今回はMac上でaz sshコマンドを実行します。 このためaz extensionコマンドを利用してMac上にAzure CLI 拡張機能(ssh拡張機能)をインストールします。
az extension add --name ssh
インストール済みのAzure CLI 拡張機能は以下のコマンドで確認可能です。
az extension list
Azure Arc対応サーバーにSSH接続してみる
SSH接続のための準備ができましたので、MacからAzure Arc対応サーバーへSSH接続してみたいと思います。
まずはAzure Portalで操作します。 SSH接続するAzure Arc対応サーバーの「接続 (プレビュー)」をクリックします。 今回はパスワードで認証するため「認証の種類」で「パスワード」を選択しています。
ユーザー名を入力します。 今回はAdministratorとしてAzure Arc対応サーバーにログインします。 画面下部にAzure Arcを介してSSH接続するためのコマンドが表示されます。
Macでターミナルを開きます。 az loginコマンドによりサインインした後、Azure Portalに表示されたコマンドを実行します。 今回はAdministratorとして接続していますので、そのパスワードを入力します。
今回は試しにGet-ComputerInfoコマンドを実行してみました。
補足
今回利用した環境ではMac上でaz ssh arcコマンドを実行しましたが、Azure Portal上で「ブラウザーで接続」をクリックするとCloud Shellにaz ssh arcコマンドが自動入力されます。
まとめ
今回はオンプレミス環境に存在するAzure Arc対応サーバーに対し、Azure Arcを介してSSH接続してみました。 今回利用した環境ではAzure Arc対応サーバーとMacはそれぞれ全く異なるサイトにあり、MacからAzure Arc対応サーバーのIPアドレスに到達することはできない状態でした。 このような環境下であってもAzure Arcを利用することで簡単にSSH接続することができました。
Azure Arcに接続したリソースの管理においてはSSH接続以外にも様々な機能がございます。 他の機能もまた改めてご紹介できればと思います。
SB C&SはAzureを取り扱われているパートナー企業様へ様々なご支援のメニューを用意しております。 メニューの詳細やAzureに関するご相談等につきましては以下の「Azure相談センター」をご確認ください。
Azure相談センター
https://licensecounter.jp/azure/
※ 本ブログは弊社にて把握、確認された内容を基に作成したものであり、製品の動作や仕様について担保・保証するものではありません。サービスや製品の動作、仕様等に関しては、予告なく変更される場合があります。
Azureに関するブログ記事一覧はこちら
著者紹介
SB C&S株式会社
ICT事業本部 技術本部 第1技術部 4課
中原 佳澄