如何使用使用者資料為 Amazon EC2 執行個體新增具有 RDP 存取權的新使用者帳戶?
我想新增另一個使用者,使其能透過遠端桌面通訊協定 (RDP) 連線到我的 Amazon Elastic Compute Cloud (Amazon EC2) Windows 執行個體。
簡短描述
若要建立一個具有 RDP 權限、可連接至您 EC2 執行個體的新本機使用者,請使用屬於使用者資料執行的 PowerShell 命令。如果您打算啟動新執行個體,則每次執行個體重新啟動或重新開機時,使用者資料都會自動執行。如果您使用已啟動的執行個體,則必須排程使用者資料的執行。
如需詳細資訊,請參閱使用者資料執行。
解決方法
**重要:**在停止和啟動執行個體之前,請執行下列動作:
- 建立 Amazon Elastic Block Store (Amazon EBS) 磁碟區的備份。
**注意:**如果您的執行個體是執行個體儲存體備份,或具有包含資料的執行個體儲存體磁碟區,則當您停止執行個體時,Amazon EC2 會刪除該資料。 - 完成解決步驟後,暫時從其 Amazon EC2 Auto Scaling 群組中移除執行個體。
**注意:**如果您停止 Amazon EC2 Auto Scaling 群組中的某個執行個體,則根據您的縮減保護設定,該執行個體可能會終止。您使用 Amazon EMR、AWS CloudFormation 或 AWS Elastic Beanstalk 啟動的執行個體,可能位於 Auto Scaling 群組中。 - 將執行個體關閉行為設定為停止,以確保執行個體在您停止時不會終止。
**注意:**當您停止和啟動執行個體時,該執行個體的公有 IP 位址也會變更。最佳做法是使用彈性 IP 位址而不是公用 IP 位址,將外部流量路由到執行個體。如果您使用 Amazon Route 53,則可能需要在公有 IP 位址變更時更新 Route 53 DNS 記錄。
在啟動時將 PowerShell 指令碼新增至您的執行個體
請完成下列步驟:
-
使用啟動執行個體精靈來設定執行個體啟動,然後在 Configure storage (組態儲存空間) 下選擇 Advanced (進階)。
-
在 Advanced details (進階詳細資訊) 下,選擇 User data (使用者資料)。
-
輸入下列 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 帳戶設定為已啟用,不會過期,並包含簡短說明。該指令碼會將使用者帳戶新增至管理員群組和遠端桌面使用者群組。需要存取遠端桌面使用者群組,但如果需要,您可以刪除 Add-LocalGroupMember -Group "Administrators" -Member $user 區段。
-
選擇 Launch instance (啟動執行個體)。
啟動後將 PowerShell 指令碼新增至您的執行個體
如果您的 EC2 執行個體已啟動,請完成下列步驟:
-
開啟 Amazon EC2 console (Amazon EC2 主控台)。
-
選擇 Instances (執行個體),然後選取您的執行個體。
-
選擇 Actions (動作),然後選取 Instance settings (執行個體設定)。
-
選擇 View/Change User data (檢視/變更使用者資料)。
-
在 User data (使用者資料) 中,輸入下列 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!。該帳戶設定為已啟用,不會過期,並包含簡短說明。該指令碼會將使用者帳戶新增至管理員群組和遠端桌面使用者群組。需要存取遠端桌面使用者群組,但如果需要,您可以刪除 Add-LocalGroupMember -Group "Administrators" -Member $user 區段。
確認 Amazon EC2 是否建立了使用者帳戶
若要確認 Amazon EC2 是否建立了使用者帳戶,您可以使用 Session Manager, (AWS Systems Manager 的一項功能) 或 PSSession 遠端存取。
若要建立 $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,並且指令碼可以在第二個執行個體上執行。
相關內容
已提問 10 個月前
已提問 3 年前
已提問 2 年前
