LoginSignup
0
0

More than 1 year has passed since last update.

Azure 仮想マシンの RDP と SSH をいつもと違うポート番号で接続してみた

Posted at

背景と目的

ウェルノウン・ポート番号で RDP は 3389、SSH は 22 と割り当てられているので、自宅以外のネットワークを利用する場合は、これらのポート番号が外部ネットワークとの境界にあるファイアウォールで閉じられている場合が多いと思います。とは言え、どうしても緊急事態で緊急対応が必要だったり、Azure Bastion や Windows Admin Center を使う準備が整っていなかったりすると、どうしても RDP や 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": {}
}

検証用の Windows 仮想マシンを作ってポート番号 8080 で接続する

bash
# 環境変数をセットします
region=japaneast
prefix=mnrdevwin
rdpport=8080

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

# パスワードを生成します
vmpass=$(openssl rand -base64 16)
echo $vmpass

# 仮想マシンを作成します
az vm create \
  --resource-group ${prefix}-rg \
  --name ${prefix}-vm \
  --os-disk-name ${prefix}-vmOSDisk \
  --image Win2019Datacenter \
  --size Standard_F2s_v2 \
  --admin-username azureuser \
  --admin-password $vmpass \
  --nsg-rule NONE \
  --public-ip-address-dns-name ${prefix} \
  --storage-sku StandardSSD_LRS

# RDP ポート番号を 8080 に設定します
az vm run-command invoke \
  --resource-group ${prefix}-rg \
  --name ${prefix}-vm \
  --command-id SetRDPPort \
  --parameters "RDPPORT=$rdpport"

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

# RDP ファイルを作成します
cat <<EOF > ${prefix}.rdp
full address:s:${prefix}.$region.cloudapp.azure.com:$rdpport
username:s:azureuser
EOF

# 仮想マシンに RDP 接続します
open -a "Microsoft Remote Desktop" ${prefix}.rdp

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

# 作成した RDP ファイルを削除します
rm -f ${prefix}.rdp

検証用の Linux 仮想マシンを作ってポート番号 8080 で接続する

bash
# 環境変数をセットします
region=japaneast
prefix=mnrdevlnx
sshport=8080

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

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

# 仮想マシンを作成します
az vm create \
  --resource-group ${prefix}-rg \
  --name ${prefix}-vm \
  --os-disk-name ${prefix}-vmOSDisk \
  --image UbuntuLTS \
  --size Standard_B1ls \
  --admin-username azureuser \
  --ssh-key-value ${prefix}.pub \
  --nsg-rule NONE \
  --public-ip-address-dns-name ${prefix} \
  --storage-sku Standard_LRS

# SSH ポート番号を 8080 に設定します
az vm run-command invoke \
  --resource-group ${prefix}-rg \
  --name ${prefix}-vm \
  --command-id RunShellScript \
  --scripts "sed -i 's/#Port 22/Port $sshport/' /etc/ssh/sshd_config && systemctl reload sshd" \
  --query value[].message \
  --output tsv

# 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 $sshport \
  --access Allow \
  --protocol Tcp

# 仮想マシンに SSH 接続します
ssh -p $sshport -i ${prefix} azureuser@${prefix}.$region.cloudapp.azure.com

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

# 作成した SSH キーペアを削除します
rm -f ${prefix}*
0
0
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
0