🥝

【Azure / 初心者向け】Azure上で仮想マシンを立ち上げて、SSHで接続し、nginxを起動するまで

2024/03/17に公開

構成図

表題の通り、「とりあえず仮想マシンを立ち上げて動かしてみる」ハンズオンです。

※ 仮想マシンへの直接的なSSH接続は本来は推奨されませんので、本番環境での使用は避けるようにします。

以前、AWSでも同じようなことをやりました。そのAzure版です。

https://zenn.dev/shimiyu/articles/9763c6ac23cab2

仮想マシンを作成する

Azure Portalから仮想マシンを作成します。

基本
仮想マシン名 az104vm
地域 Japan East
可用性オプション インフラストラクチャ冗長は必要ありません 可用性ゾーン / スケールセット / 可用性セットが選択可能
セキュリティの種類 Standard
イメージ Ubuntu Server 20.04 LTS - x64 Gen2
VMアーキテクチャ x64
サイズ Standard_B1ls - 1vcpu, 0.5GiBのメモリ($4.96/月) 1番安いものを選択
基本 管理者アカウント
認証の種類 SSH公開キー
ユーザー名 azureuser デフォルト
SSH公開キーのソース 新しいキーの組の生成
キーの組名 az104vm_key デフォルト
基本 受信ポートの規則
パブリック受信ポート 選択したポートを許可する
受信ポートを選択 HTTP(80), SSH(22)
ディスク
OSディスクサイズ イメージの既定値(30GiB)
OSディスクの種類 Standard SSD(ローカル冗長ストレージ)
VMと共に削除
ネットワーク
仮想ネットワーク (新規)VNetD アドレス範囲:10.4.0.0/16
サブネット (新規)subnet1(10.4.0.0/24)
パブリックIP (新規)az104vm-ip
NICネットワークセキュリティグループ Basic 設定した受信規則に従いNSGを作成し、それをNICに紐づけます。なしを選択すると、NICにNSGが紐づきません
パブリック受信ポート 選択したポートを許可する
受信ポートを選択 HTTP(80), SSH(22)
VMが削除されたときにパブリックIPとNICを削除する
管理
システム割り当てマネージド ID の有効化 チェックしない
Microsoft Entra ID でログイン チェックしない
自動シャットダウンを有効にする 停止を忘れた時のために設定しておく
シャットダウン時刻 19:00
バックアップの有効化 チェックしない
OSの更新 バッチオーケストレーションオプション Azure調整済み デフォルト
再起動の設定 必要に応じて再起動 デフォルト

上記を指定して仮想マシンを作成します。

作成ボタンを押すと、秘密鍵のダウンロードを促されます。

秘密鍵をダウンロードすると、仮想マシンリソースの作成が開始されます。

しばらくすると、仮想マシンと関連リソースのデプロイが完了しました。

下記は作成された仮想マシンリソースです。

仮想マシンの状態が実行中の場合、指定した一番安いプラン(Standard_B1ls)でも1時間数円は掛かります。使用しない場合は停止にしておきましょう。

また、NICなどのリソースも作成されています。NICは仮想マシンにつき最低1つは必要で、仮想マシン作成時に一緒に作成されるのが一般的です。

さらに、仮想ネットワーク(VNet)に仮想マシン(VM)を紐付ける際、そのVMのNICがVNetに接続されることになります。このNICを通じて、VMは別のリソースやインターネットと通信するわけです。

今作成した仮想ネットワークVNetD接続デバイスを確認すると、同じく今作成された仮想マシンのNICがあることを確認できます。

NSGの設定を確認する

仮想マシン作成時、ネットワーク > NICネットワークセキュリティグループBasicを選択しました。

結果として、指定した受信規則に沿ったNSGが作成され、この仮想マシンのNICに関連付けされています。これらは仮想マシン作成時に自動で実施されました。

作成されたNSGを見ると、仮想マシン作成時に許可した受信ポート(HTTP / SSH)が許可されていることが分かります。そのため、この後実施するSSH接続とブラウザからのアクセスは問題なく疎通するはずです。

仮想マシンにSSH接続する

さて、準備が整ったので、作成した仮想マシンにSSH接続していきます。

以下のコマンドでSSH接続を実施します。

ssh -i {秘密鍵のパス} azureuser@{パブリックIP}

パブリックIPアドレスは、仮想マシンやパブリックIPリソースの概要欄から確認できます。

秘密鍵には仮想マシン作成時にダウンロードしたキーを指定します。

ssh -i ./az104vm_key.pem azureuser@{ご自身の環境のパブリックIP}

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for './az104vm_key.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "./az104vm_key.pem": bad permissions
azureuser@パブリックIP: Permission denied (publickey).

sshコマンドを実行すると、「UNPROTECTED PRIVATE KEY FILE!」という警告が出ました。

所有者以外にキーの読み取り権限が付与されていることが原因のようです。

所有者以外がキーを読み取りできないように権限を変更し、再度ssh接続を行います。

chmod 600 ./az104vm_key.pem

# 再度SSH接続
ssh -i ./az104vm_key.pem azureuser@{ご自身の環境のパブリックIP}

Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.15.0-1057-azure x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

  System information as of Sat Mar 16 06:41:00 UTC 2024

  System load:  0.0               Processes:             100
  Usage of /:   5.3% of 28.89GB   Users logged in:       0
  Memory usage: 55%               IPv4 address for eth0: 10.4.0.4
  Swap usage:   0%

Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status


The list of available updates is more than a week old.
To check for new updates run: sudo apt update


The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

azureuser@az104vm:~$ 

無事、仮想マシンへのSSH接続ができました。

nginxをインストールする

仮想マシンにSSH接続できたので、続いてnginxをインストールしていきます。

azureuser@az104vm:~$ sudo apt update
azureuser@az104vm:~$ sudo apt install nginx

インストールが完了したら、nginxの起動を確認します。

# nginxが起動していることを確認する
azureuser@az104vm:~$ systemctl status nginx

● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2024-03-16 06:49:21 UTC; 27s ago
       Docs: man:nginx(8)
   Main PID: 2248 (nginx)
      Tasks: 2 (limit: 458)
     Memory: 4.0M
     CGroup: /system.slice/nginx.service
             ├─2248 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             └─2249 nginx: worker process

Mar 16 06:49:21 az104vm systemd[1]: Starting A high performance web server and a reverse proxy serve>
Mar 16 06:49:21 az104vm systemd[1]: Started A high performance web server and a reverse proxy server.
lines 1-13/13 (END)

ブラウザから仮想マシンにアクセスする

nginxの起動が確認できたので、ブラウザからアクセスしてきます。

パブリックIPアドレスをブラウザに打ち込むと、想定通りnginxのWelcomeページが表示されました。

Discussion