如何使用 cloud-init 和使用者資料,將具有 SSH 存取的新使用者帳戶新增至我的 EC2 執行個體?

1 分的閱讀內容
0

我需要新增另一位可以使用 SSH 連接至 Amazon Elastic Compute Cloud (Amazon EC2) Linux 執行個體的使用者。我如何使用 cloud-init 和使用者資料做到這一點?

簡短描述

將使用者資料指令碼傳遞給 cloud-init,該指令碼會執行下列動作:

1.    建立新使用者。

2.    為 SSH 目錄及其中的檔案設定適當的擁有權和檔案許可。

3.    將 SSH 公有金鑰附加至 authorized_keys 檔案中。

解決方法

在開始之前,請注意下列事項:

1.    使用 SSH 連接至您的 EC2 執行個體

2.    執行下列命令以確認已安裝 cloud-init

sudo yum list installed cloud-init

如果尚未安裝 cloud-init,請執行下列命令以安裝它:

sudo yum install cloud-init

3.    開啟 Amazon EC2 主控台,然後選取執行個體。

4.    依序選擇動作執行個體狀態停止

注意:如果未提供停止選項,則表示執行個體已停止,或者其根裝置是執行個體儲存體磁碟區。

5.    從金鑰對中擷取公有金鑰

**注意:**您必須擁有金鑰對或私有金鑰才能擷取公有金鑰。若要建立金鑰對,請參閱使用 Amazon EC2 建立金鑰對。針對 SSH 安全性,最佳實務是透過 EC2 主控台或第三方工具建立金鑰對。

6.    依序選擇動作執行個體設定檢視/變更使用者資料

7.    將下列範例指令碼複製並貼上使用者資料欄位中。在使用者名稱中,輸入新使用者的使用者名稱。對於 ssh-rsa AB3nzExample,輸入您的公有金鑰:

#cloud-config
cloud_final_modules:
- [users-groups,always]
users:
  - name: username
    groups: [ wheel ]
    sudo:     
      - "ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart httpd"
      - "ALL=(ALL) NOPASSWD: /usr/bin/cp /home/username/webserver_configuration.conf /etc/httpd/conf.d/"
    shell: /bin/bash
    ssh-authorized-keys:
    - ssh-rsa AB3nzExample

此範例指令碼允許新使用者僅執行下列根動作:

  • /home/username/webserver_configuration.conf 檔案複製到 /etc/httpd/conf.d/
  • 重新啟動 Web 伺服器服務

若要授予使用者對 EC2 的完整存取權,請將 sudo 欄位取代為 sudo: [ "ALL=(ALL) NOPASSWD:ALL" ]

**注意:**依預設,cloud-init 指令僅在啟動執行個體時執行。不過,當您使用此使用者資料指令碼時,cloud-init 會在每次執行個體重新開機或重新啟動時,將公有金鑰新增至執行個體。如果移除使用者資料指令碼,則會還原預設功能。

8.    選擇儲存

9.    依序選擇動作執行個體狀態開始

10.    當執行個體達到執行狀態時,請以新使用者身分登入。新使用者的預設行為與 ec2-user 相同。

**注意:**修改執行個體的使用者資料會使用 ModifyInstanceAttribute API 動作。您可以建立 AWS Identity and Access Management (IAM) 原則以限制此動作。


相關資訊

顯示您的金鑰對

如何將具有 SSH 存取的新使用者帳戶新增至我的 Amazon EC2 Linux 執行個體?

AWS 官方
AWS 官方已更新 2 年前