AzureのLinux VMにEntra ID認証でSSHログインする方法|az sshコマンドによるパスワードレス接続とAWS SSMとの比較

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOME > Linux技術 リナックスマスター.JP(Linuxマスター.JP) > Azure > AzureのLinux VMにEntra ID認証でSSHログインする方法|az sshコマンドによるパスワードレス接続とAWS SSMとの比較
「Azure上のLinux VMにSSHするたびに鍵ファイルを管理するのが手間だ」「チームメンバーの入退社のたびに公開鍵を配布・削除するのが辛い」と感じていませんか?
その悩みを解消するのが、AzureのEntra ID(旧称 Azure Active Directory)を使ったSSH認証です。個人の公開鍵を各VMに配置する代わりに、組織のアカウントでそのままSSH接続できます。

この記事では、az ssh拡張機能を使ってEntra ID認証でLinux VMにパスワードレスSSH接続する方法を、実際のazコマンドの出力例を交えながら解説します。従来のSSH鍵管理との違いや、AWSのSystems Manager Session Managerとの比較も含めて実践的にまとめました。

動作確認環境: Ubuntu 24.04 LTS(Azure Linux VM)・Azure CLI 2.63.0・2026年9月時点

この記事のポイント

・AADLoginForLinux拡張機能をVMにインストールするだけで設定が完了する
・az ssh vm コマンドで証明書は自動発行されるため鍵ファイルの管理が不要
・アクセスはAzure RBACロール(Virtual Machine User Login)で制御できる
・AWSのSSM Session Managerと異なり、標準SSHプロトコルが使えるのが強み


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

Azure Entra ID SSH認証とは何か、なぜ使うのか

従来のAzure Linux VMへのSSH接続は、公開鍵認証かパスワード認証が主流でした。公開鍵認証は安全ですが、チームで運用すると以下の問題が発生しがちです。

・VMごとに ~/.ssh/authorized_keys を管理する必要がある
・メンバーが増えるたびに公開鍵の配布が必要になる
・退職者の公開鍵を漏れなく削除できているか確認が難しい

Entra ID SSH認証はこれらを解消します。AzureのIDaaS(Entra ID)を認証基盤として使うため、ユーザーのEntra IDアカウントが無効化されれば、VMへのSSHアクセスも即座に停止されます。権限の集中管理がRBACで完結し、「誰がどのVMにアクセスできるか」をAzureポータルやazコマンドから一元管理できます。

前提条件と設定の全体像

Entra ID SSH認証を使うために必要なものを確認しておきます。

・Azureサブスクリプション(所有者またはContributor権限)
・接続先のLinux VM(Ubuntu 20.04以上、または RHEL8以上)
・Azure CLI 2.54.0以上(az ssh 拡張機能をサポートするバージョン)
・接続するユーザーがEntra IDのメンバーであること

設定の流れは以下の3ステップです。

1. AADLoginForLinux拡張機能を有効にしたLinux VMを作成する(または既存VMに拡張機能を追加する)
2. 接続するユーザーにRBACロールを割り当てる
3. az ssh vm コマンドで接続する

AWSのSSM Session Managerと異なり、Entra ID SSHは標準のSSHプロトコルをそのまま使います。そのため、scp・sftp・port forwarding(SSHトンネル)も通常どおり動作します。

Entra ID対応Linux VMの作成と拡張機能インストール

1. AADLoginForLinux拡張機能を有効にしたVMを作成する

VM作成時に --assign-identity フラグと拡張機能を同時に設定するのが最も簡単です。

# リソースグループの作成 az group create --name rg-entra-ssh-demo --location japaneast # Entra ID認証対応のLinux VMを作成 az vm create --resource-group rg-entra-ssh-demo --name vm-entra-demo --image Ubuntu2404 --assign-identity --admin-username azureuser --generate-ssh-keys --size Standard_B2s # AADLoginForLinux拡張機能を追加 az vm extension set --publisher Microsoft.Azure.ActiveDirectory --name AADSSHLoginForLinux --resource-group rg-entra-ssh-demo --vm-name vm-entra-demo

{ "autoUpgradeMinorVersion": true, "name": "AADSSHLoginForLinux", "provisioningState": "Succeeded", "publisher": "Microsoft.Azure.ActiveDirectory", "type": "AADSSHLoginForLinux", "typeHandlerVersion": "1.0" }

--assign-identity はSystem Assigned Managed Identityを有効にするオプションです。Entra ID認証にはVMのManaged IdentityがEntra IDと通信するために必要です。

既存VMに後から拡張機能を追加する場合も同じ az vm extension set コマンドで実行できます。ただし、Managed Identityが未設定の既存VMには az vm identity assign を先に実行してください。

2. RBACロールをユーザーに割り当てる

拡張機能を入れるだけではSSHできません。接続するユーザーに対して、VM単位でRBACロールを割り当てる必要があります。

・Virtual Machine User Login: 一般ユーザーとしてSSH接続できる
・Virtual Machine Administrator Login: sudo権限ありでSSH接続できる

まずVMのリソースIDを取得します。

VM_RESOURCE_ID=$(az vm show --resource-group rg-entra-ssh-demo --name vm-entra-demo --query id --output tsv) echo $VM_RESOURCE_ID # /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/rg-entra-ssh-demo/providers/Microsoft.Compute/virtualMachines/vm-entra-demo

次に、接続するユーザーのオブジェクトIDを取得してロールを割り当てます。

# サインイン中のユーザーのオブジェクトIDを取得 MY_OBJECT_ID=$(az ad signed-in-user show --query id --output tsv) # Virtual Machine User Loginロールを割り当て az role assignment create --role "Virtual Machine User Login" --assignee-object-id $MY_OBJECT_ID --assignee-principal-type User --scope $VM_RESOURCE_ID

{ "principalId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "principalType": "User", "roleDefinitionId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/providers/Microsoft.Authorization/roleDefinitions/fb879df8-f326-4884-b1cf-06f3ad86be52", "roleDefinitionName": "Virtual Machine User Login", "scope": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/rg-entra-ssh-demo/providers/Microsoft.Compute/virtualMachines/vm-entra-demo" }

現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、20年以上の運用経験を持つ現役エンジニアが基礎から教えます。
Azure対応セミナーの詳細を見る >>

az sshコマンドでLinux VMにSSH接続する

1. az sshの拡張機能をインストールする

az ssh コマンドはAzure CLIの拡張機能として提供されています。未インストールの場合は以下で追加します。

az extension add --name ssh

The installed extension 'ssh' is in preview.

インストール後は az ssh --help でオプションを確認できます。

2. az ssh vmで接続する

接続は az ssh vm コマンド1行で実行できます。証明書はAzureが自動で発行するため、ローカルに鍵ファイルを用意する必要はありません。

az ssh vm --resource-group rg-entra-ssh-demo --vm-name vm-entra-demo

Welcome to Ubuntu 24.04.1 LTS (GNU/Linux 6.8.0-1021-azure x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com Last login: Thu Sep 25 12:34:56 2026 from 203.0.113.xxx azureuser@vm-entra-demo:~$

初回接続時にAzureのブラウザ認証(デバイスコードフロー)を求められる場合があります。az login で事前にサインイン済みの場合は認証ダイアログなしでそのままSSH接続できます。

3. 接続ユーザー名とホームディレクトリを確認する

Entra ID認証で接続した場合、ユーザー名は組織のUPN(User Principal Name)をもとに自動生成されます。

# 接続後のシェルで実行 whoami # azureuser(または UPNベースの変換されたユーザー名) id # uid=1001(azureuser) gid=1001(azureuser) groups=1001(azureuser),4(adm),27(sudo) echo $HOME # /home/azureuser

Virtual Machine Administrator Login ロールを割り当てたユーザーは、追加設定なしで sudo が使えます。Virtual Machine User Login のユーザーは sudo が制限されており、管理作業が必要な場合は追加で権限を付与するか、RBACロールを変更してください。

AWS Systems Manager Session Managerとの比較

AWSにも踏み台レスでEC2にアクセスする仕組みがあります。AzureのEntra ID SSHとAWSのSSM Session Managerを機能面で比較します。

比較項目 Azure Entra ID SSH AWS SSM Session Manager
使用プロトコル 標準SSH(ポート22) HTTPS経由の独自プロトコル
scp・sftp・ポート転送 利用可能 SSH Plugin経由でSSHトンネルは可能
認証基盤 Entra ID(Azure AD) IAM(ポリシーベース)
クライアントの要件 Azure CLI + az ssh拡張機能 AWS CLI + Session Manager Plugin
接続先VMのエージェント AADSSHLoginForLinux拡張機能 SSM Agent(Amazon Linuxは標準搭載)
パブリックIPなし接続 Bastionとの組み合わせが必要 VPC Endpointがあれば単独で可能
セッション記録・監査 Azure Monitor・Entra IDの監査ログ CloudWatch Logs・S3への自動記録
最大の違いはプロトコルです。Entra ID SSHは標準のSSHをそのまま使うため、既存のSSH設定やツール(VS Code Remote SSH、MobaXtermなど)をそのまま活用できます。

一方、SSM Session Managerはポート22を閉じたままインターネット経由でアクセスできる点で優れており、VPCのNetwork ACLにSSHの穴を開けたくないセキュリティポリシーにも対応しやすい設計です。

どちらを選ぶかは組織のセキュリティポリシーと既存ツールへの依存度次第ですが、Azureを主軸に使うチームでは、Entra IDに統合できるEntra ID SSHの方が権限管理の一元化という観点で使いやすいケースが多いです。

よくあるトラブルと対処法

「az ssh vm でSSHに失敗する」場合

エラーメッセージに 403 Forbidden や Principal does not have access to VM が含まれる場合は、RBACロールの割り当てが完了していないか、反映に時間がかかっています。

# ロール割り当てが完了しているか確認 az role assignment list --scope $VM_RESOURCE_ID --query "[?roleDefinitionName=='Virtual Machine User Login']" --output table

Principal RoleDefinitionName Scope ------------------------------------ -------------------------- ------- xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Virtual Machine User Login /subscriptions/...

ロール割り当てがリストに表示されているのに接続できない場合、拡張機能のインストール完了を az vm get-instance-view で確認してください。

az vm get-instance-view --resource-group rg-entra-ssh-demo --name vm-entra-demo --query "instanceView.extensions[?name=='AADSSHLoginForLinux'].statuses"

ProvisioningState/succeeded が返れば拡張機能は正常にインストール済みです。failed が返る場合はVMを再起動してから再度試してください。

「NSGでポート22が閉じている」場合

Entra ID SSHは標準のSSHポート(22番)を使います。NSGで22番ポートを閉じている環境では接続できません。

# NSGの受信ルールを確認 az network nsg rule list --resource-group rg-entra-ssh-demo --nsg-name vm-entra-demoNSG --output table --query "[?destinationPortRange=='22' || destinationPortRange=='*']"

パブリックIPを使わずに接続したい場合は、AzureのBastionとEntra ID SSHを組み合わせることで、NSGで22番を閉じたままVMにアクセスできます。

本記事のまとめ

AzureのEntra ID認証でLinux VMにSSHログインする手順を解説しました。

操作 azコマンド
AADSSHLoginForLinux拡張機能をインストールする az vm extension set --publisher Microsoft.Azure.ActiveDirectory --name AADSSHLoginForLinux
VMのリソースIDを取得する az vm show --query id --output tsv
ユーザーにRBACロールを割り当てる az role assignment create --role "Virtual Machine User Login" --scope VM_RESOURCE_ID
az ssh拡張機能をインストールする az extension add --name ssh
Entra ID認証でSSH接続する az ssh vm --resource-group RG名 --vm-name VM名
SSH鍵ファイルの配布・削除の手間をなくし、Entra IDで一元管理できるのが最大のメリットです。チームでAzureのLinux VMを運用しているなら、ぜひ導入を検討してください。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、20年以上の運用経験を持つ現役エンジニアが基礎から教えます。
Azure対応セミナーの詳細を見る >>

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。