LoginSignup
0
2

More than 1 year has passed since last update.

SSH キーで接続する Azure Linux VM を 3 パターン試してみた

Posted at

背景と目的

今まではパスワード認証かつ接続元の IP アドレスを絞って SSH 接続する方法で Azure Linux VM を検証に使ってきましたが、毎回ランダムなパスワードを生成してコピペするのが面倒になってきました。そこで毎回コピペせずに都度違う SSH キーを使う方法を 3 パターン試してみました。

  1. SSH キーペアをローカルで作成して使う方法
  2. SSH キーペアをローカルで作って SSH 公開キーを Azure に登録して使う方法
  3. SSH キーペアを Azure で作成して SSH 秘密キーをローカルに保存して使う方法

前提条件

コマンドの実施環境は、Mac + Azure CLI です。

bash
$ sw_vers
ProductName:    macOS
ProductVersion: 12.1
BuildVersion:   21C52

$ az version
{
  "azure-cli": "2.32.0",
  "azure-cli-core": "2.32.0",
  "azure-cli-telemetry": "1.0.6",
  "extensions": {}
}

SSH キーペアをローカルで作成して使う方法

上記サイトを参考に SSH キーペアを作成して SSH 接続するまでを試します。

bash
# VM を作成するリージョンを設定します
region=japaneast

# リソース名のプレフィックスを設定します
prefix=mnrsshvm1

# リソースグループを作成します
az group create \
  --name ${prefix}-rg \
  --location $region

# SSH キーペアをファイル名を指定して作成します
ssh-keygen -m PEM -t rsa -b 4096 \
  -f ${prefix}

# 作成した SSH 公開キーを指定して VM を作成します
az vm create \
  --resource-group ${prefix}-rg \
  --name ${prefix}-vm \
  --os-disk-name ${prefix}-vmOSDisk \
  --image UbuntuLTS \
  --admin-username azureuser \
  --ssh-key-value ${prefix}.pub \
  --size Standard_B1ls \
  --nsg-rule NONE \
  --storage-sku Standard_LRS

# NSG に自分の IP アドレスから SSH 接続出来るようにします
az network nsg rule create \
  --resource-group ${prefix}-rg \
  --name Allow-SSH \
  --nsg-name ${prefix}-vmNSG \
  --priority 100 \
  --source-address-prefixes $(curl -s inet-ip.info) \
  --destination-port-ranges 22 \
  --access Allow \
  --protocol Tcp

# SSH 秘密キーを使用して SSH 接続します
ssh -i ${prefix} azureuser@$(az vm show \
  --resource-group ${prefix}-rg \
  --name ${prefix}-vm \
  --show-detail \
  --query publicIps \
  --output tsv)

# リソースグループを削除します
az group delete \
  --name ${prefix}-rg

# 作成した SSH キーペアを削除します
rm -f ${prefix}*

SSH キーペアをローカルで作って SSH 公開キーを Azure に登録して使う方法

上記サイトを参考に SSH 公開キーを Azure にアップロードする手順が加わります。

bash
# VM を作成するリージョンを設定します
region=japaneast

# リソース名のプレフィックスを設定します
prefix=mnrsshvm2

# リソースグループを作成します
az group create \
  --name ${prefix}-rg \
  --location $region

# SSH キーペアをファイル名を指定して作成します
ssh-keygen -m PEM -t rsa -b 4096 \
  -f ${prefix}

# SSH 公開キーを Azure にアップロードします
az sshkey create \
  --resource-group ${prefix}-rg \
  --name ${prefix}-sshkey \
  --public-key @${prefix}.pub

# アップロードした SSH 公開キーを指定して VM を作成します
az vm create \
  --resource-group ${prefix}-rg \
  --name ${prefix}-vm \
  --os-disk-name ${prefix}-vmOSDisk \
  --image UbuntuLTS \
  --admin-username azureuser \
  --ssh-key-name ${prefix}-sshkey \
  --size Standard_B1ls \
  --nsg-rule NONE \
  --storage-sku Standard_LRS

# NSG に自分の IP アドレスから SSH 接続出来るようにします
az network nsg rule create \
  --resource-group ${prefix}-rg \
  --name Allow-SSH \
  --nsg-name ${prefix}-vmNSG \
  --priority 100 \
  --source-address-prefixes $(curl -s inet-ip.info) \
  --destination-port-ranges 22 \
  --access Allow \
  --protocol Tcp

# SSH 秘密キーを使用して SSH 接続します
ssh -i ${prefix} azureuser@$(az vm show \
  --resource-group ${prefix}-rg \
  --name ${prefix}-vm \
  --show-detail \
  --query publicIps \
  --output tsv)

# リソースグループを削除します
az group delete \
  --name ${prefix}-rg

# 作成した SSH キーペアを削除します
rm -f ${prefix}*

SSH キーペアを Azure で作成して SSH 秘密キーをローカルに保存して使う方法

上記サイトを参考に SSH キーペアを Azure で作成する手順が加わります。

bash
# VM を作成するリージョンを設定します
region=japaneast

# リソース名のプレフィックスを設定します
prefix=mnrsshvm3

# リソースグループを作成します
az group create \
  --name ${prefix}-rg \
  --location $region

# SSH キーペアを Azure で作成します
az sshkey create \
  --resource-group ${prefix}-rg \
  --name ${prefix}-sshkey

# ローカルに保存されたファイル名が以下の例のように表示されます
Private key is saved to "/home/user/.ssh/7777777777_9999999".
Public key is saved to "/home/user/.ssh/7777777777_9999999.pub".

# ローカルに保存された秘密キーのパーミッションを変更します
chmod 600 /home/user/.ssh/7777777777_9999999

# アップロードした SSH 公開キーを指定して VM を作成します
az vm create \
  --resource-group ${prefix}-rg \
  --name ${prefix}-vm \
  --os-disk-name ${prefix}-vmOSDisk \
  --image UbuntuLTS \
  --admin-username azureuser \
  --ssh-key-name ${prefix}-sshkey \
  --size Standard_B1ls \
  --nsg-rule NONE \
  --storage-sku Standard_LRS

# NSG に自分の IP アドレスから SSH 接続出来るようにします
az network nsg rule create \
  --resource-group ${prefix}-rg \
  --name Allow-SSH \
  --nsg-name ${prefix}-vmNSG \
  --priority 100 \
  --source-address-prefixes $(curl -s inet-ip.info) \
  --destination-port-ranges 22 \
  --access Allow \
  --protocol Tcp

# SSH 秘密キーを使用して SSH 接続します
ssh -i ~/.ssh/7777777777_9999999 azureuser@$(az vm show \
  --resource-group ${prefix}-rg \
  --name ${prefix}-vm \
  --show-detail \
  --query publicIps \
  --output tsv)

# リソースグループを削除します
az group delete \
  --name ${prefix}-rg

# 作成した SSH キーペアを削除します
rm -f ~/.ssh/7777777777_9999999*

参考

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2