AzureのVNetとLinux VMをazコマンドで構築する手順|リソースグループ作成からSSH接続まで

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Azure > AzureのVNetとLinux VMをazコマンドで構築する手順|リソースグループ作成からSSH接続まで
「AzureでLinux VMを作りたいけど、VNetって何から作ればいいの?」
「ポータルのウィザードに頼らず、azコマンドで一から構築手順を理解したい」

Azureポータルの「仮想マシンを作成する」ウィザードを使えば数クリックでVMが起動しますが、裏側ではVNet・サブネット・NIC・NSGが自動生成されています。後から「どのリソースを変えればいい?」と迷う前に、構成要素を一つずつ手で作る経験が役に立ちます。

この記事では、Azure CLI(azコマンド)だけを使ってリソースグループの作成からVNet・サブネット・パブリックIP・NIC・NSGを順番に作成し、最後にLinux VMを起動してSSH接続するまでの実践手順を解説します。Azure CLI 2.61以上・AlmaLinux 9.4で動作確認済みです。

この記事のポイント

・VNetはAzure上のプライベートネットワーク基盤でVMより先に作成する
・az network vnet createでVNetとサブネットを一括で作れる
・NSGでSSH(22/tcp)を許可しないとVMに接続できない点に注意
・本記事はAzure CLI 2.61以上・AlmaLinux 9.4で動作確認済み


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

AzureのVNetとVMの構成要素を整理する

まずは「VMを作るために必要なリソース」を俯瞰しておきます。Azureポータルのウィザードが自動で用意してくれる分、これを知らずに使い続けると後で困ります。

リソースグループ:Azureリソースをまとめるフォルダのようなもの。VNetもVMも同じRGに入れると管理しやすい
VNet(仮想ネットワーク):Azure上のプライベートIPアドレス空間。例:10.0.0.0/16
サブネット:VNetをさらに分割した小さなIPレンジ。例:10.0.1.0/24
NSG(ネットワークセキュリティグループ):インバウンド・アウトバウンドのポートフィルタリングルール
パブリックIP:インターネット側からVMにアクセスするためのグローバルIPアドレス
NIC(ネットワークインターフェースカード):VMとネットワークをつなぐ仮想NIC

これらを順番に作り、最後にVMを作成してNICを紐付ける流れになります。AWSで言えば、VNetがVPC、NSGがセキュリティグループ、NICがENI(Elastic Network Interface)に相当します。

実行環境と前提条件

本記事のコマンドは以下の環境で動作確認しています。

Azure CLI:2.61.0(az --version で確認)
実行環境:Ubuntu 24.04 LTS(ローカルPC)
作成するVM OS:AlmaLinux 9.4
サブスクリプション:有効なAzureサブスクリプションが必要

Azure CLIがインストールされていない場合は、Microsoftの公式ドキュメントに従ってインストールしてください。インストール後は必ず az login で認証を済ませてから作業を始めます。

# Azure CLIのバージョン確認 az --version # Azureにログイン(ブラウザが開き認証画面が表示される) az login

azコマンドでVNetとLinux VMを構築する

1. リソースグループを作成する

まずすべてのリソースを格納するリソースグループを作成します。リージョンはジャパンイースト(japaneast)を指定します。

az group create \ --name myRG \ --location japaneast

成功すると以下のようなJSON出力が返ります。"provisioningState": "Succeeded" になっていれば作成完了です。

{ "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myRG", "location": "japaneast", "name": "myRG", "properties": { "provisioningState": "Succeeded" }, "type": "Microsoft.Resources/resourceGroups" }

2. VNetとサブネットを作成する

次にVNet(10.0.0.0/16)とその中のサブネット(10.0.1.0/24)を一度のコマンドで作成します。

az network vnet create \ --resource-group myRG \ --name myVNet \ --address-prefix 10.0.0.0/16 \ --subnet-name mySubnet \ --subnet-prefix 10.0.1.0/24

--subnet-name--subnet-prefix を一緒に指定することで、VNetとサブネットを同時に作成できます。後からサブネットを追加したい場合は az network vnet subnet create を使います。

作成確認は以下のコマンドで行います。

az network vnet show \ --resource-group myRG \ --name myVNet \ --query "{name:name, addressSpace:addressSpace, subnets:subnets[].name}" \ --output json # 出力例 { "addressSpace": { "addressPrefixes": ["10.0.0.0/16"] }, "name": "myVNet", "subnets": ["mySubnet"] }

3. パブリックIPアドレスを確保する

インターネットからVMにSSH接続するためのパブリックIPを作成します。--sku Standard を指定してStandard SKUにします(Basic SKUは廃止予定のため)。

az network public-ip create \ --resource-group myRG \ --name myPublicIP \ --sku Standard \ --allocation-method Static

--allocation-method Static で固定IPを割り当てます。Dynamic(動的)にするとVM再起動のたびにIPが変わるため、検証目的でも Static を推奨します。

4. NSGを作成してSSHの受信ルールを追加する

NSG(ネットワークセキュリティグループ)を作成し、ポート22(SSH)のインバウンド通信を許可します。

# NSGを作成 az network nsg create \ --resource-group myRG \ --name myNSG # SSH(ポート22)のインバウンドルールを追加 az network nsg rule create \ --resource-group myRG \ --nsg-name myNSG \ --name AllowSSH \ --protocol tcp \ --priority 1000 \ --destination-port-range 22 \ --access Allow \ --direction Inbound

NSGのルールを追加しないと、後でVMを作成してもSSHが拒否されます。この設定はVM作成前に必ず行う点が重要です。

5. NICを作成してVNetとNSGを紐付ける

NICは「VMとネットワークをつなぐ橋渡し」です。ここでVNet・サブネット・パブリックIP・NSGをまとめて紐付けます。

az network nic create \ --resource-group myRG \ --name myNIC \ --vnet-name myVNet \ --subnet mySubnet \ --public-ip-address myPublicIP \ --network-security-group myNSG

このコマンド一つで、NICにパブリックIPとNSGが紐付けられた状態になります。

6. Linux VMを作成してSSHで接続する

いよいよVM本体を作成します。--nics で先ほど作ったNICを指定します。

az vm create \ --resource-group myRG \ --name myLinuxVM \ --image almalinux:almalinux:9-gen2:latest \ --size Standard_B2s \ --nics myNIC \ --admin-username azureuser \ --generate-ssh-keys

--generate-ssh-keys を指定すると、~/.ssh/id_rsa~/.ssh/id_rsa.pub が自動生成され、公開鍵がVMに登録されます。

VM作成が完了すると次のような出力が返ります。

{ "fqdns": "", "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myRG/providers/Microsoft.Compute/virtualMachines/myLinuxVM", "location": "japaneast", "macAddress": "00-0D-3A-xx-xx-xx", "powerState": "VM running", "privateIpAddress": "10.0.1.4", "publicIpAddress": "20.xx.xx.xxx", "resourceGroup": "myRG", "zones": "" }

"powerState": "VM running"publicIpAddress が表示されていれば起動成功です。パブリックIPを使ってSSH接続を確認します。

# publicIpAddressの値に置き換えてください ssh azureuser@20.xx.xx.xxx # 接続確認:VMのホスト名とOSバージョンを確認 [azureuser@myLinuxVM ~]$ hostname myLinuxVM [azureuser@myLinuxVM ~]$ cat /etc/os-release NAME="AlmaLinux" VERSION="9.4 (Seafoam Ocelot)" ID="almalinux"

ここまでで、VNetとLinux VMのazコマンドによる基本構築は完了です。

現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、Azureの学習をもっと体系的に進めたいなら、Azure実践ハンズオン講座をご覧ください。現役エンジニアが教える実務直結カリキュラムで、VM構築からインフラ管理まで一気に習得できます。

VM作成後に確認しておきたい基本操作

構築後に覚えておくと便利なazコマンドを紹介します。

# VMを停止(割り当て解除) # deallocateにすると計算リソースが解放されコストが止まる az vm deallocate \ --resource-group myRG \ --name myLinuxVM # VMを起動 az vm start \ --resource-group myRG \ --name myLinuxVM # VMの状態確認 az vm show \ --resource-group myRG \ --name myLinuxVM \ --show-details \ --query "{name:name, state:powerState, ip:publicIps}" \ --output table

az vm deallocateaz vm stop は似ていますが、stop では仮想マシンはシャットダウンされてもAzureの計算リソースは確保されたまま(課金継続)になる場合があります。コストを抑えるには必ず deallocate を使ってください。

作業が終わったらリソースグループごと削除するとクリーンに片付けられます。

# リソースグループごと削除(VMもVNetもNICも全部消える) az group delete \ --name myRG \ --yes --no-wait

--no-wait を付けると削除完了を待たずにコマンドが返ります。本番環境でこのコマンドを使う際は二重に確認してください。

よくあるエラーと対処法

1. SSH接続が「Connection timed out」になる

NSGのインバウンドルールでSSH(ポート22)が許可されていない可能性があります。以下のコマンドでNSGルールを確認してください。

az network nsg rule list \ --resource-group myRG \ --nsg-name myNSG \ --output table Priority Name Port Protocol Access Direction ---------- ---------- ------ ---------- -------- ----------- 1000 AllowSSH 22 Tcp Allow Inbound

AllowSSH の行がない場合は、手順4のNSGルール追加コマンドを再度実行してください。LinuxサーバーのSSHポート確認についてはLinux ポート確認の全コマンドも参考にしてください。

2. az vm create が「ResourceNotFound」エラーになる

NICやパブリックIPがまだ作成されていないか、リソースグループ名が間違っている可能性があります。

# リソースグループ内のリソース一覧を確認 az resource list \ --resource-group myRG \ --output table Name ResourceType Location ------------ ----------------------------------------------- ---------- myVNet Microsoft.Network/virtualNetworks japaneast myPublicIP Microsoft.Network/publicIPAddresses japaneast myNSG Microsoft.Network/networkSecurityGroups japaneast myNIC Microsoft.Network/networkInterfaces japaneast

VMを作成する前に上記の4リソースがすべてリストに表示されていることを確認してください。

3. SSH鍵が別のPCから使えない

--generate-ssh-keys で作成されたSSH秘密鍵は ~/.ssh/id_rsa に保存されています。別のPCからSSH接続したい場合は、その秘密鍵をコピーするか、既存のSSH公開鍵(~/.ssh/id_rsa.pub)を --ssh-key-values オプションで明示的に指定してVMを作成してください。

本記事のまとめ

AzureのVNetとLinux VMをazコマンドで構築する基本手順を解説しました。

やりたいこと azコマンド
リソースグループを作る az group create --name myRG --location japaneast
VNetとサブネットを作る az network vnet create --name myVNet --subnet-name mySubnet
パブリックIPを確保する az network public-ip create --name myPublicIP --sku Standard
NSGを作りSSHルールを追加する az network nsg rule create --destination-port-range 22
NICを作りネットワークを紐付ける az network nic create --name myNIC --vnet-name myVNet
Linux VMを作成する az vm create --name myLinuxVM --nics myNIC
VMを停止(割り当て解除)する az vm deallocate --name myLinuxVM
リソース全体を削除する az group delete --name myRG --yes
各リソースを個別に作成する手順を踏むことで、「VMのネットワーク設定がどこにあるのか」「NSGとNICの関係は何か」という疑問が解消されます。次のステップとして、今回作成したVNetにNATゲートウェイを追加してプライベートサブネット構成にしたり、DNS設定を整えてVNet内の名前解決を構成したりすると、さらに実務に近い環境を構築できます。

Azureの学習をもっと体系的に進めたいなら、Azure実践ハンズオン講座をご覧ください。現役エンジニアが教える実務直結カリキュラムで、VM構築からインフラ管理まで一気に習得できます。

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

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

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

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

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

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

登録10秒/合わなければ解除3秒 / 詳細はこちら

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

この記事を書いた人

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

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

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