スキップしてコンテンツを表示

ユーザーデータを使用して、Amazon EC2 インスタンスに RDP でアクセスできるユーザーアカウントを新しく追加する方法を教えてください。

所要時間2分
0

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 スクリプトをインスタンスに追加する

次の手順を実行します。

  1. インスタンス起動ウィザードを使用してインスタンスの起動を設定し、[ストレージの設定][詳細設定] を選択します。

  2. [詳細情報][ユーザーデータ] を選択します。

  3. 次の 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 セクションは必要に応じて削除してもかまいません。

  4. [インスタンスを起動] を選択します。

起動後に PowerShell スクリプトをインスタンスに追加する

EC2 インスタンスが既に起動されている場合は、次の手順を実行します。

  1. Amazon EC2 が、次回の起動時に更新されたユーザーデータを反映するように設定します

  2. EC2 インスタンスを停止します

  3. Amazon EC2 コンソールを開きます。

  4. [インスタンス] を選択し、該当するインスタンスを選択します。

  5. [アクション] を選択し、[インスタンス設定] を選択します。

  6. [ユーザーデータの表示/変更] を選択します。

  7. [ユーザーデータ] に次の 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 セクションは必要に応じて削除してもかまいません。

  8. インスタンスを起動します

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 番目のインスタンスで実行できることを確認します。
AWS公式更新しました 1年前
コメントはありません

関連するコンテンツ