跳至內容

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

2 分的閱讀內容
0

我想建立一個額外的使用者,讓其可以透過 SSH 連線至我的 Amazon Elastic Compute Cloud (Amazon EC2) Linux 執行個體。

簡短說明

包含可完成以下任務的使用者資料命令:

  • 建立新使用者。
  • 授予使用者 sudo 權限。
  • 將 SSH 公有金鑰附加至 authorized_keys 檔案中。

解決方法

重要: 在變更執行個體前,請先檢閱以下事項:

請完成下列步驟:

  1. 使用 SSHSession Manager 登入執行個體。

  2. 若要確認已安裝 cloud-init,請執行以下命令:

    $ cloud-init -v

    如果命令回傳錯誤,請執行以下命令以在您的 Linux 發佈項目上安裝執行個體:

    對於 Debian 型執行個體

    $ sudo apt-get install cloud-init

    對於 RPM 型執行個體

    sudo dnf install cloud-init

    對於 Suse 執行個體

    zypper install cloud-init
  3. 確認已安裝 cloud-init 後,繼續停止執行個體。
    注意:如果停止動作無法使用,則執行個體可能已停止,或其根裝置為執行個體儲存磁碟區。

  4. 從您的私有金鑰產生公有金鑰,以連線至新使用者。
    **注意:**您必須擁有金鑰對或私有金鑰才能取得公有金鑰。若要建立金鑰對,請參閱為您的 Amazon EC2 執行個體建立金鑰對。出於 SSH 安全考量,最佳實務是透過 EC2 主控台或第三方工具建立金鑰對。
    若要擷取公有金鑰,請執行以下命令。如果您的私有金鑰設有複雜密碼,系統會提示您輸入複雜密碼。

    $ ssh-keygen -f <private_key_file> -y
  5. 將您的公有金鑰插入以下命令中,然後使用該命令更新使用者資料欄位:
    選取執行個體。
    在導覽窗格中,選擇 Actions (動作),然後選擇 Instance Settings (執行個體設定)。
    選擇 Edit User Data (編輯使用者資料),然後將指令碼貼上至欄位中。
    **注意:**將預留位置 username 替換為您要使用的使用者名稱。在 ssh-rsa AB3nzExample,輸入您的公有金鑰。如果您使用 Debian 執行個體,請將群組值從 wheel 改為 sudo

    #cloud-config
    cloud_final_modules:
    - [users-groups,always]
    users:
      - name:username
        groups: [ wheel ]
        shell: /bin/bash
        sudo: ["ALL=(ALL) NOPASSWD:ALL"]
         ssh-authorized-keys:
         - ssh-rsa AB3nzExample

    上述命令會建立具有不受限制存取權的使用者。若要封鎖使用者的 sudo 存取,請將 sudo 的值設定為 false。如需更多資訊,請參閱 cloud-init 網站上的雲端設定範例
    **注意:**依預設,cloud-init 指令僅在啟動執行個體時執行。不過,當您使用此使用者資料指令碼時,cloud-init 會在每次執行個體重新開機或重新啟動時,將公有金鑰新增至執行個體。如果移除使用者資料指令碼,則會還原預設功能。

  6. 選擇 Save (儲存)。

  7. 選擇 Actions (動作),選取 Instance State (執行個體狀態),然後選擇 Start (啟動)。

  8. 當執行個體達到執行中狀態時,請以新使用者身分登入。新使用者的預設行為與 ec2-user 相同。
    **注意:**使用 ModifyInstanceAttribute API 動作來修改執行個體的使用者資料。建立 AWS Identity and Access Management (IAM) 原則以限制此動作。

相關資訊

顯示您的金鑰對

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

AWS 官方已更新 2 年前