Remote Desktop Protocol (RDP) を使用して Amazon Elastic Compute Cloud (Amazon EC2) Windows インスタンスに接続できる、新しいユーザーを作成しようとしています。
簡単な説明
EC2 インスタンスに接続できる RDP アクセス許可を持つ新しいローカルユーザーを作成するには、ユーザーデータの一環として実行される PowerShell コマンドを使用します。新しいインスタンスを起動する予定の場合は、そのインスタンスが再起動またはリブートするたびにユーザーデータは自動的に実行されます。起動済みのインスタンスを使用する場合は、ユーザーデータの実行をスケジュールする必要があります。
詳細については、「ユーザーデータの実行」を参照してください。
解決策
重要: インスタンスを停止して起動する前に、次の手順を実行してください。
注: インスタンスを停止または起動する際、インスタンスのパブリック IP アドレスは変更されます。外部トラフィックをインスタンスにルーティングするには、パブリック IP アドレスではなく Elastic IP アドレスを使用することをおすすめします。Amazon Route 53 を使用している場合は、パブリック IP アドレスが変更された際、Route 53 の DNS レコードを更新する必要が生じる場合があります。
起動時に PowerShell スクリプトをインスタンスに追加する
次の手順を実行します。
-
インスタンス起動ウィザードを使用してインスタンスの起動を設定し、[ストレージの設定] で [詳細設定] を選択します。
-
[詳細情報] で [ユーザーデータ] を選択します。
-
次の PowerShell スクリプトを入力します。
<powershell>$user = New-LocalUser -AccountNeverExpires:$true -Password ( ConvertTo-SecureString -AsPlainText -Force 'ExampleP@ssword!') -Name "RDPUser" -FullName "Local RDPUser" -Description "Local Administrator"
Add-LocalGroupMember -Group "Administrators" -Member $user
Add-LocalGroupMember -Group "Remote Desktop Users" -Member $user
</powershell>
注: 上記のスクリプト例では、新しいローカルユーザー RDPUser を作成します。パスワードは ExampleP@ssword! です。この AWS アカウントは有効に設定されており、有効期限はなく、簡単な説明が記載されています。このスクリプトでは、ユーザーアカウントが Administrators グループと Remote Desktop Users グループの両方に追加されます。Remote Desktop Users グループへのアクセスは必須ですが、Add-LocalGroupMember -Group "Administrators" -Member $user セクションは必要に応じて削除してもかまいません。
-
[インスタンスを起動] を選択します。
起動後に PowerShell スクリプトをインスタンスに追加する
EC2 インスタンスが既に起動されている場合は、次の手順を実行します。
-
Amazon EC2 が、次回の起動時に更新されたユーザーデータを反映するように設定します。
-
EC2 インスタンスを停止します。
-
Amazon EC2 コンソールを開きます。
-
[インスタンス] を選択し、該当するインスタンスを選択します。
-
[アクション] を選択し、[インスタンス設定] を選択します。
-
[ユーザーデータの表示/変更] を選択します。
-
[ユーザーデータ] に次の PowerShell スクリプトを入力します。
<powershell>$user = New-LocalUser -AccountNeverExpires:$true -Password ( ConvertTo-SecureString -AsPlainText -Force 'ExampleP@ssword!') -Name "RDPUser" -FullName "Local RDPUser" -Description "Local Administrator"
Add-LocalGroupMember -Group "Administrators" -Member $user
Add-LocalGroupMember -Group "Remote Desktop Users" -Member $user
</powershell>
注: 上記のスクリプト例では、新しいローカルユーザーアカウント RDPUser を作成します。パスワードは ExampleP@ssword! です。アカウントは有効に設定されており、有効期限はなく、簡単な説明が記載されています。このスクリプトでは、ユーザーアカウントが Administrators グループと Remote Desktop Users グループの両方に追加されます。Remote Desktop Users グループへのアクセスは必須ですが、Add-LocalGroupMember -Group "Administrators" -Member $user セクションは必要に応じて削除してもかまいません。
-
インスタンスを起動します。
Amazon EC2 がユーザーアカウントを作成したことを確認する
AWS Systems Manager の機能である Session Manager、または PSSession リモートアクセスを使用すると Amazon EC2 がユーザーアカウントを作成したことを確認できます。
$usernamelist 変数を作成するには、次のコマンドを実行します。
$usernamelist = Get-WmiObject -Class Win32_UserAccount -Filter "LocalAccount='True'" |Select Name, Status, Disabled, AccountType, Lockout, PasswordRequired, PasswordChangeable, SID
注: $usernamelist 変数には、「ローカルアカウントが true である」という要件と一致するすべてのユーザーアカウントのリストが含まれています。
作成したユーザーアカウントの詳細を確認するには、次のコマンドを実行します。
$usernamelist | select-string -AllMatches RDPUser
注: RDPUser を実際のユーザーアカウント名に置き換えます。
問題のトラブルシューティング
新しいユーザーアカウントを追加する際に問題が発生した場合は、次の手順を実行してください。
- Amazon EC2 がユーザーアカウントを作成しなかった場合は、route print コマンドまたは invoke-webrequest コマンドを実行し、インスタンスのメタデータおよび、ユーザーデータへのアクセスを確認します。200 以外の応答が返される場合は、インスタンスのユーザーデータを確認してください。
- ユーザーデータのログを閲覧する際は、「ユーザーデータスクリプトを実行して EC2 Windows インスタンスを設定する場合の問題をトラブルシューティングする方法を教えてください」を参照してください。
- スクリプトを実行する前に、ローカルコンピューターでスクリプトをテストしてください。
- インスタンスが正しいバージョンの PowerShell を使用しており、スクリプトが 2 番目のインスタンスで実行できることを確認します。