はじめに
Azure仮想マシンにはSSH接続用の公開鍵は一つしか設定できないため、複数マシンからの接続は困難です。
(公開鍵の再設定はできるが、毎回行うのは面倒)
Azure AD認証を使用することで、環境を選ばず接続することができます。
用意するもの
- Azure仮想マシン(Linux)
手順
- 拡張機能をインストールする
- ロールを割り当てる
- SSH接続を行う
1. 拡張機能をインストールする
Cloud Shellを開きます。
リソースグループと仮想マシンを指定し、Azure ADでの接続に必要な拡張機能をインストールします。
- リソースグループ:myResourceGroup
- 仮想マシン:myVM
$ az vm extension set \
--publisher Microsoft.Azure.ActiveDirectory.LinuxSSH \
--name AADLoginForLinux \
--resource-group myResourceGroup \
--vm-name myVM
2. ロールを割り当てる
Azureアカウントに仮想マシン接続用のロールを割り当てます。
接続に関するロールは以下の二つです。
- Virtual Machine Administrator Login(管理者権限)
- Virtual Machine User Login(ユーザー権限)
# アカウント名、仮想マシンIDを変数に設定
$ username=$(az account show --query user.name --output tsv)
$ vm=$(az vm show --resource-group myResourceGroup --name myVM --query id -o tsv)
# ロールの割り当て
$ az role assignment create \
--role "Virtual Machine Administrator Login" \
--assignee $username \
--scope $vm
ロールの割り当てはポータル上でも行えます。
3. SSH接続を行う
ポータル上で仮想マシンのリソースを表示し、接続を選択します。
Azure ADでの接続用コマンドが表示されるので、コピーしてCLIでコマンドを実行します。
~$ ssh azureuser@azure.com@13.71.141.35
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code GZ3KVMCHK to authenticate. Press ENTER when ready.
表示されたURL(https://microsoft.com/devicelogin)にブラウザでアクセスし、コードを入力します。
指定したアカウントでサインインし、CLIに戻ってENTERを押せば接続完了です。
新規に仮想マシンを作成する場合(ポータル)
「Ubuntu Server」のマシンでは、Azure ADで接続する機能(プレビュー版)を選択できます。
この機能を有効にすることで上記手順1が不要となり、ロールの割り当てのみ行うことでSSH接続が可能になります。
補足
仮想マシンはデフォルトでは全てのポートが閉じているため、SSHのポート(22)を開放する必要があります。
参考サイト