Azure CLI がインストールされている端末から、Azure Arc-enabled Server に登録したサーバに対して SSH で接続できる機能がプレビューになったので試してみました。
準備(Azure 側)
Azure CLI にログインするアカウントに Virtual Machine Local User Login
の権限を付与します。今回の検証では所有者の権限を有するアカウントを使います。
リソースプロバイダを登録します
az provider register -n Microsoft.HybridConnectivity
Azure CLI に拡張機能を追加します。
az extension add --name ssh
SSH で接続したいサーバにエンドポイントを設定します。
az rest --method put --uri https://management.azure.com/subscriptions/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/akshci-eu/providers/Microsoft.HybridCompute/machines/omprewin01/providers/Microsoft.HybridConnectivity/endpoints/default?api-version=2021-10-06-preview --body "{\"properties\": {\"type\": \"default\"}}"
準備(サーバ側)
1.13.21320.014 以上の Connected Machine Agent をインストールします
PS C:\Users\Administrator> & 'C:\Program Files\AzureConnectedMachineAgent\azcmagent.exe' version
azcmagent version 1.17.01931.201
Arc-enabled server なサーバ上で sshd を起動します。
PS C:\Users\Administrator> Get-Service -Name "sshd"
Status Name DisplayName
------ ---- -----------
Running sshd OpenSSH SSH Server
Connected Machine Agent に SSH のポートを登録します。
PS C:\Users\Administrator> & 'C:\Program Files\AzureConnectedMachineAgent\azcmagent.exe' config set incomingconnections.ports 22
Config property incomingconnections.ports set to value [22] (previously [])
PS C:\Users\Administrator> & 'C:\Program Files\AzureConnectedMachineAgent\azcmagent.exe' config list
Local Configuration Settings
incomingconnections.ports (preview) : [22]
proxy.url :
extensions.allowlist : []
extensions.blocklist : []
proxy.bypass : []
guestconfiguration.enabled : true
extensions.enabled : true
PS C:\Users\Administrator>
接続
az ssh arc
コマンドを利用します。az ssh vm
でも OK です。今回は CloudShell からオンプレミスのサーバに SSH で接続してみます。認証方式はローカルユーザの資格情報です。
参考:az ssh arc
@Azure:~$ az ssh arc -n omprewin01 -g akshci-eu --local-user administrator
administrator@omprewin01s password:
Microsoft Windows [Version 10.0.20348.587]
(c) Microsoft Corporation. All rights reserved.
administrator@OMPREWIN01 C:\Users\Administrator>
特にトラブルもなくつながりました。ホスト名からして、確かに Azure Arc-enabled Server に登録したオンプレミスのサーバにつながっているようです。
administrator@OMPREWIN01 C:\Users\Administrator>hostname
omprewin01
netstat で見る限りでは、Azure Arc で利用している Azure Hybrid Instance Metadata Service (himds) がサーバの sshd に接続しているようです。
administrator@OMPREWIN01 C:\Users\Administrator>netstat -abno | find "22"
TCP 0.0.0.0:22 0.0.0.0:0 LISTENING 1696
TCP [::]:22 [::]:0 LISTENING 1696
TCP [::1]:22 [::1]:52928 ESTABLISHED 1696
TCP [::1]:52928 [::1]:22 ESTABLISHED 2180
UDP 0.0.0.0:60223 *:* 1172
UDP [::]:60223 *:* 1172
administrator@OMPREWIN01 C:\Users\Administrator>tasklist
Image Name PID Session Name Session# Mem Usage
========================= ======== ================ =========== ============
(中略)
himds.exe 2180 Services 0 23,104 K
gc_service.exe 2644 Services 0 19,376 K
gc_service.exe 2748 Services 0 18,492 K
(中略)
sshd.exe 1696 Services 0 6,232 K
sshd.exe 416 Services 0 7,920 K
sshd.exe 3640 Services 0 8,000 K
(中略)
現時点で、監査ログには Azure Arc で SSH 接続したことを明確に示すログが残らないようです。推測できそうなログは出ていますが、SSH で接続した回数とログの件数が一致していません。GA の時にはアクセスを明確に示すログが残るようになってほしい…
まとめ
プレビューになった Azure Arc-enabled Server への SSH アクセスを試しました。この機能を利用すると、とても気軽に Azure Arc-enabled Servers にリモートアクセスできます。「オンプレミスのサーバ1台を Azure Arc-enabled Server に登録してリモートアクセス用の踏み台サーバにする」という使い方もできそうですね。