「ポータルのウィザードに頼らず、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で動作確認済み
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
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
"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
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
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"
現場で通用する安全な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 deallocate と az 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
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 |
Azureの学習をもっと体系的に進めたいなら、Azure実践ハンズオン講座をご覧ください。現役エンジニアが教える実務直結カリキュラムで、VM構築からインフラ管理まで一気に習得できます。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます