2026年7月27日

2026年7月27日

Azure VMの作成と初期設定方法(Ubuntu・SSH鍵・NSG・自動シャットダウンまで)

Azure の仮想マシン(VM)は、リソースグループを作り、OS イメージとサイズを選んで作成すれば数分で起動します。ただ、作っただけの状態では SSH が世界中に開いていたり、停止しても課金が続いたりと、運用前に直しておきたい点が残ります。この記事では Azure CLI で Ubuntu の VM を作成し、SSH の接続元制限、OS の更新、タイムゾーン、バックアップ、コスト対策までの初期設定を順に説明します。

作成前に決めておくこと

VM の作成画面やコマンドで聞かれる項目は多いですが、事前に決めておくべきなのは次の5つです。

  • リソースグループ: VM、ディスク、ネットワークなど関連リソースをまとめる入れ物。検証が終わったらグループごと削除できるよう、用途ごとに分けます。
  • リージョン: 日本なら東日本(japaneast)か西日本(japanwest)。利用できる VM サイズはリージョンで異なります。
  • イメージ: OS の種類とバージョン。サポート期間が長い Ubuntu の LTS 版がよく使われます。
  • サイズ: CPU とメモリの組み合わせ。小さな Web サーバーなら B シリーズなどのバースト可能なサイズから始め、負荷を見て変更するのが現実的です。
  • 認証方式: パスワードではなく SSH 公開鍵を使います。パスワード認証は総当たり攻撃の標的になりやすいためです。

サイズやイメージの選択肢、料金は頻繁に更新されます(2026年10月現在)。作成前に最新の一覧と料金をポータルや公式ドキュメントで確認してください。

Azure CLIでVMを作成する

ポータルの画面からも作成できますが、画面の配置や項目名は更新で変わりやすいため、ここでは手順を再現しやすい Azure CLI を使います。Azure Cloud Shell を使えば、インストールなしでブラウザから同じコマンドを実行できます。

az login

az group create --name rg-web-demo --location japaneast

az vm create \
  --resource-group rg-web-demo \
  --name vm-web01 \
  --image Ubuntu2404 \
  --size Standard_B2s \
  --admin-username azureuser \
  --generate-ssh-keys \
  --public-ip-sku Standard

--image に指定できる短い名前(エイリアス)は CLI のバージョンで増減します。az vm image list --output table で使える名前を確認し、見つからなければイメージの URN(発行元:オファー:SKU:バージョン の形式) を指定してください。--generate-ssh-keys は、手元に SSH 鍵がなければ新しく作り、既にあればその公開鍵を使います。鍵を新規作成した場合は、秘密鍵の保存場所を確認してバックアップしておきます。秘密鍵をなくすとログインできなくなるためです。

作成が終わると、パブリック IP アドレスなどが JSON で表示されます。この時点で、VM と同じ名前を元にしたネットワークセキュリティグループ(NSG)が作られ、SSH(22番ポート)を許可するルールが入っています。

SSHで接続して接続元を制限する

表示されたパブリック IP に SSH で接続します。

ssh azureuser@203.0.113.10

203.0.113.10 は例です。自分の VM の IP に置き換えてください。接続できたら、次に SSH の受け付けを自分の IP アドレスだけに絞ります。既定の NSG ルールは接続元が「すべて」になっていることが多く、そのままだと世界中からログイン試行を受けます。

# NSG とルール名を確認
az network nsg list --resource-group rg-web-demo --output table
az network nsg rule list --resource-group rg-web-demo \
  --nsg-name vm-web01NSG --output table

# SSH の接続元を自分の固定 IP だけにする
az network nsg rule update \
  --resource-group rg-web-demo \
  --nsg-name vm-web01NSG \
  --name default-allow-ssh \
  --source-address-prefixes 198.51.100.20/32

NSG 名やルール名は作成方法によって異なることがあるため、一覧で確認してから更新してください。自宅回線のように IP が変わる環境では、Azure Bastion を使ってパブリック IP を経由せずに接続する方法や、Microsoft Defender for Cloud の Just-In-Time VM アクセスで必要なときだけ開ける方法も検討できます。

Web サーバーとして公開するなら、HTTP と HTTPS を開けます。

az vm open-port --resource-group rg-web-demo --name vm-web01 --port 80,443 --priority 900

NSG は Azure 側のファイアウォールです。OS 側で ufw なども併用する場合は、どちらかで閉じていると通信できないので、つながらないときは両方を確認します。

OSの初期設定

ログインしたら、まずパッケージを最新にします。

sudo apt update && sudo apt upgrade -y
sudo timedatectl set-timezone Asia/Tokyo
timedatectl

タイムゾーンを日本時間にしておくと、ログの時刻を読み違えずに済みます。続いて、セキュリティ更新を自動で適用する unattended-upgrades が有効かを確認します。Ubuntu の多くのイメージでは既定で入っていますが、念のため確認しておきます。

sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades

SSH の設定では、パスワード認証が無効になっているかを /etc/ssh/sshd_config と /etc/ssh/sshd_config.d/ 配下のファイルで確認します。設定を変える場合は、今の SSH 接続を切らずに別のターミナルで新しく接続できることを確かめてから、元のセッションを閉じてください。設定ミスで締め出されるのを防ぐためです。

万一 SSH でつながらなくなった場合でも、ポータルの「シリアルコンソール」や「パスワードのリセット」などの復旧手段があります。シリアルコンソールの利用にはブート診断が有効である必要があるため、作成直後に有効になっているかを確認しておくと安心です。

ディスクとデータの扱い

Azure の VM には、OS ディスクとは別に「一時ディスク」が付くサイズがあります。Linux では /mnt などにマウントされますが、ここに置いたデータは VM の再割り当てやメンテナンスで消える可能性があります。データベースやアップロードファイルは、OS ディスクか、追加したデータディスクに置いてください。

データディスクを追加したら、パーティション作成とフォーマット、/etc/fstab への登録が必要です。/etc/fstab にはデバイス名ではなく UUID で書き、nofail を付けておくと、ディスクが見つからないときに起動が止まるのを避けられます。

バックアップとスナップショット

初期設定が終わった段階で、バックアップの仕組みを用意します。選択肢は主に2つです。

  • Azure Backup: Recovery Services コンテナーに VM を登録し、ポリシーに沿って定期的にバックアップします。世代管理や復元の手順が整っているので、本番用途ならまずこちらを検討します。
  • ディスクのスナップショット: 大きな変更の前に、その時点のディスクを手動で保存します。作業前の保険として手軽です。

どちらも保存した量に応じて料金がかかります。また、バックアップは取るだけでなく、別の VM に復元して実際に起動できるかを一度は試しておくことが大切です。

コストを抑える設定

Azure の VM は、OS の中で shutdown しただけでは「停止済み」になり、コンピューティング料金がかかり続けます。料金を止めるには「割り当て解除」の状態にする必要があります。

# 割り当て解除(コンピューティング料金が止まる)
az vm deallocate --resource-group rg-web-demo --name vm-web01

# 起動
az vm start --resource-group rg-web-demo --name vm-web01

# 毎日決まった時刻に自動シャットダウン(時刻は UTC で指定)
az vm auto-shutdown --resource-group rg-web-demo --name vm-web01 --time 1300

自動シャットダウンの時刻は UTC 指定なので、日本時間の22時に止めたい場合は 1300 になります。割り当て解除してもディスクやパブリック IP の料金は残る点に注意してください。検証用の VM を使い終わったら、リソースグループごと削除すると消し忘れを防げます(削除は元に戻せないため、残したいデータがないか確認してから行います)。

az group delete --name rg-web-demo

あわせて、サブスクリプションに予算とアラートを設定しておくと、想定外の課金に早く気づけます。

まとめ

  • 作成前にリソースグループ、リージョン、イメージ、サイズ、認証方式(SSH 公開鍵)を決める
  • Azure CLI の az vm create で作ると手順を再現しやすい。イメージ名は az vm image list で確認する
  • 作成直後に NSG の SSH ルールを自分の IP に絞り、必要なポートだけを開ける
  • OS 更新、タイムゾーン、自動更新、SSH のパスワード認証無効化を確認し、締め出しに備えて復旧手段を把握しておく
  • 一時ディスクに大事なデータを置かず、Azure Backup かスナップショットで備える
  • 料金を止めるには割り当て解除。自動シャットダウンと予算アラートでコストを管理する

お気軽にご相談ください

お見積りへ お問い合わせへ
▲