【Azure / 初心者向け】Azure上で仮想マシンを立ち上げて、SSHで接続し、nginxを起動するまで
構成図
表題の通り、「とりあえず仮想マシンを立ち上げて動かしてみる」ハンズオンです。
※ 仮想マシンへの直接的なSSH接続は本来は推奨されませんので、本番環境での使用は避けるようにします。
以前、AWSでも同じようなことをやりました。そのAzure版です。
仮想マシンを作成する
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