[EC2][Windows Server]ログオンできないインスタンスのAdministratorアカウントを有効にする

2015.07.21

はじめに

Windows Serverの運用で諸事情によりAdministratorを無効にしておくことは多いかと思います(これがベストな運用かは別問題ですが・・・)。この状態で別ユーザでログオン出来なくなってしまった場合、Administratorアカウントを再び有効にする必要があります。例えば、別ユーザのパスワード有効期限が切れた場合などです。Administratorアカウントのパスワードの有効期限が切れた場合についてはWindows インスタンスのパスワードを設定するのような対応方法が沢山見つかるのですが、Administrator自体が無効な場合については見つからなかったので、備忘録として残しておきます。

なお、EC2の以下のOSで検証しました。

  • Windows Server 2012 R2

Administratorアカウントを有効にする方法

対応方法の流れとしては、以下のようになります。以降、ログオンしたいインスタンスを「元インスタンス」、別に用意するインスタンスを「別インスタンス」とします。

1.元インスタンスを停止〜ボリュームのデタッチ

元インスタンスを停止し、ボリュームをデタッチします。デタッチの方法についてはWindows インスタンスのパスワードを設定するの記述を参考にしてください。

2.別インスタンスの準備〜ボリュームのアタッチ

元インスタンスと同じOSで、別インスタンスを準備します。上記でデタッチしたボリュームを、別インスタンスにアタッチします。アタッチの方法についてはWindows インスタンスのパスワードを設定するの記述を参考にしてください。

3.別インスタンスにて設定ファイルを変更

別インスタンスにログインし、アタッチしたボリュームをセカンダリボリュームとして使用できるようにします。やり方はAmazon EBS ボリュームを使用できるようにするを参考にしてください。(ただし上記のOSでは、[Action] – [All Tasks] – [Online]がメニューバーからは表示されなく、[Disk1]を右クリックしたことを付け加えておきます)

セカンダリボリュームに接続できたら、そのドライブ内の「セカンダリボリュームのドライブ:\Program Files\Amazon\Ec2ConfigService\Settings\config.xml」をエディタで開きます。「name」「state」という組み合わせの「plugin」定義が有るので、以下のようにstateを変更して保存します。

name state
Ec2SetPassword Disabled
Ec2HandleUserData Enabled

4.元インスタンスにアタッチ〜パスワード再設定

別インスタンスを停止し、ボリュームをデタッチします。元インスタンスにアタッチします(このとき/dev/sda1などDeviceの値が元通りになるよう注意してください)。Administratorのパスワードを再設定するため、マネージメントコンソール上で元インスタンスを右クリック - [Get Windows Password] - [Retrieve Default Windows Administrator Password]よりパスワードを再設定してください。

5.User DataにてAdministratorを有効にする

Administratorを有効にするため、UserDataにコマンドを設定して元インスタンスの起動時に実行されるようにします。マネージメントコンソール上で元インスタンスを選択し、User Dataに以下の値を登録してください。

<script>NET USER Administrator /active:yes</script>

User DataについてはEC2Config サービスを使用した Windows インスタンスの設定の記述を参考にしてください。

6.Administratorでログオン

元インスタンスを起動し、新たに設定したパスワードでリモートデスクトップ等からログオンできたら成功です。

まとめ

先にも書いたように、情報があまりなかったため苦戦しました。ポイントは設定ファイルを変更するときに、「name」の「Ec2SetPassword」「Ec2HandleUserData」を変更するところだと思います。同じ様な問題の解決の役に立てば幸いです。