VMAccess 拡張機能を使用して Linux VM のログイン資格情報をリセット
このポストは、8 月 25 日に投稿した Using VMAccess Extension to Reset Login Credentials for Linux VM の翻訳です。
Azure VM のパスワードや SSH キーを忘れてしまって VM にアクセスできなくなった経験はありませんか? そんなときに VMAccess 拡張機能を使用すれば、パスワードや SSH キー、SSH 構成をリセットして、再びアクセスできるようになります。
この拡張機能は Linux VM を対象としています。Windows VM については、こちらのページをご参照ください。
また、初めて VM 拡張機能を使用するという場合は、関連する情報についてこちらのブログ記事でご確認ください。
前提条件
- 最新の Microsoft Azure Linux Agent (バージョン 2.0.5 以降) をインストールします。
- Azure PowerShell をインストールします。VMAccess 拡張機能をデプロイするには、他の VM 拡張機能と同様、Azure PowerShell コマンドレットを使用します。なお、クロスプラットフォーム スクリプトを使用したデプロイメントも数週間以内にサポートされる予定です。詳細については別途お知らせしますので、引き続きご注目ください。
- リセット後に VM で使用する新しいパスワードまたは SSH キーを準備します。
VMAccess 拡張機能を使用する
VM の何をリセットするかによって、VMAccess を使用する 5 つのシナリオが考えられます。それぞれのシナリオについて、対応する PowerShell スクリプトの例をご紹介したいと思います。ご注目いただきたいのは、シナリオに応じて異なるパラメーターを指定するだけでよい点です。後半の「処理を開始」以降の部分は、どのシナリオも同じです。スクリプトはきわめて単純です。
1. パスワードのみをリセットする
#パスワードをリセットするためのサンプル スクリプト
#VM 名を入力
$VmName = “VMName”
$vm = Get-AzureVM $VmName
#現在のユーザー名と新しいパスワードを入力
$UserName = "CurrentName"
$Password = "NewPassword"
$PrivateConfig = '{"username":"' + $UserName + '", "password": "' + $Password + '”}'
#処理を開始
$ExtensionName = 'VMAccessForLinux'
$Publisher = 'Microsoft.OSTCExtensions'
$Version = '1.0'
Set-AzureVMExtension -ExtensionName $ExtensionName -VM $vm -Publisher $Publisher -Version $Version -PrivateConfiguration $PrivateConfig | Update-AzureVM
2. SSH キーのみをリセットする
#SSH キーをリセットするためのサンプル スクリプト
#VM 名を入力
$VmName = “VMName”
$vm = Get-AzureVM $VmName
#現在のユーザー名と新しい SSH 公開キーのパスを入力
$UserName = "CurrentName"
$cert = Get-Content "CertPath"
$PrivateConfig = '{"username":"' + $UserName + '", "ssh_key":"' + $cert + '"}'
#処理を開始
$ExtensionName = 'VMAccessForLinux'
$Publisher = 'Microsoft.OSTCExtensions'
$Version = '1.0'
Set-AzureVMExtension -ExtensionName $ExtensionName -VM $vm -Publisher $Publisher -Version $Version -PrivateConfiguration $PrivateConfig | Update-AzureVM
3. パスワードと SSH キーをリセットする
#パスワードと SSH キーをリセットするためのサンプル スクリプト
#VM 名を入力
$VmName = 'VMName'
$vm = Get-AzureVM $VmName
#現在のユーザー名と共に、新しいパスワードと新しい SSH 公開キーの証明書パスを入力
$UserName = "CurrentName"
$Password = "NewPassword"
$cert = Get-Content "CertPath"
$PrivateConfig = '{"username":"' + $UserName + '", "password": "' + $Password + '", "ssh_key":"' + $cert + '"}'
#処理を開始
$ExtensionName = 'VMAccessForLinux'
$Publisher = 'Microsoft.OSTCExtensions'
$Version = '1.0'
Set-AzureVMExtension -ExtensionName $ExtensionName -VM $vm -Publisher $Publisher -Version $Version -PrivateConfiguration $PrivateConfig | Update-AzureVM
4. 新しい sudo ユーザー アカウントを作成する
ユーザー名を忘れた場合、VMAccess を使用して sudo 権限が付与されたユーザー名を作成することができます。このとき、元のユーザー名とログイン キーは変更されず、引き続き有効です。
パスワードでアクセスする sudo ユーザーを新たに作成する場合はシナリオ 1 のスクリプトを、SSH キーでアクセスする sudo ユーザーを新たに作成する場合はシナリオ 2 のスクリプトを、また、両方を使ってアクセスするユーザーを新たに作成する場合はシナリオ 3 のスクリプトを使用します。このとき、“UserName” を新しいユーザー名に変更することを忘れないでください。
5. SSH 構成をリセットする
SSH 構成がうまくいかないと、VM にアクセスできなくなる恐れもあります。VMAccess 拡張機能を使用すれば、既定の構成にリセットできます。既定の構成にリセットするには、構成内の新しいアクセス用パラメーター (ユーザー名、パスワード、または SSH キー) すべてを削除するだけで済みます。この拡張機能では、SSH サーバーを再起動し、VM の SSH ポートを開き、SSH 構成を規定の構成にリセットします。VM のユーザー アカウント (パスワードまたは SSH キー) は変更されません。
なお、リセットされる SSH 構成ファイルは /etc/ssh/sshd_config に配置されています。
#VM の SSH 構成をリセットするためのサンプル スクリプト
#VM 名のみを入力
$VmName = 'VMName'
$vm = Get-AzureVM $VmName
$PrivateConfig = '{"reset_ssh": "True"}'
#処理を開始
$ExtensionName = 'VMAccessForLinux'
$Publisher = 'Microsoft.OSTCExtensions'
$Version = '1.0'
Set-AzureVMExtension -ExtensionName $ExtensionName -VM $vm -Publisher $Publisher -Version $Version -PrivateConfiguration $PrivateConfig | Update-AzureVM
結果を問い合わせる
VMAccess 拡張機能のステータスは、Azure PowerShell コマンドレットの Get-AzureVM または Get-Deployment で取得できます。
リセット後に VM にアクセスする
VMAccess 拡張機能を用いて資格情報や構成のリセットが完了したら、新しいアカウント名、パスワード、または SSH キーでインスタンスにログオンできます。
注意事項
既存のユーザー アカウントのパスワードまたは SSH キーだけをリセットする場合は、入力するユーザー名が元のユーザー名と同じであることを確認してください。元の名前と異なるものを入力すると、VMAccess 拡張機能では上述のシナリオ 4 に該当するものと判断され、新しいユーザー アカウントが作成されます。