cloud-init 및 사용자 데이터를 사용하여 SSH 액세스 권한이 있는 새 사용자 계정을 EC2 인스턴스에 추가하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2019년 6월 19일

SSH를 사용하여 Amazon Elastic Compute Cloud(Amazon EC2) Linux 인스턴스에 연결할 수 있는 다른 사용자를 추가해야 합니다. cloud-init 및 사용자 데이터를 사용하여 이를 수행하려면 어떻게 해야 합니까?

간략한 설명

다음을 수행하는 사용자 데이터 스크립트를 cloud-init에 전달합니다.

1.    새 사용자를 생성합니다.

2.    SSH 디렉터리 및 이 디렉터리의 파일에 대한 적절한 소유권과 파일 권한을 설정합니다.

3.    authorized_keys 파일에 SSH 퍼블릭 키를 추가합니다.

해결 방법

시작하기 전에 다음 사항을 확인하십시오.

  • 인스턴스를 중지하고 다시 시작하면 인스턴스 스토어 볼륨의 데이터가 모두 지워집니다. 따라서 유지하려는 데이터를 포함하는 모든 인스턴스 스토어 볼륨을 백업해야 합니다. 자세한 내용은 AMI의 루트 디바이스 유형 결정을 참조하십시오.
  • 인스턴스를 중지하고 다시 시작하면 인스턴스의 퍼블릭 IP 주소가 변경됩니다. 외부 트래픽을 인스턴스로 라우팅할 때에는 퍼블릭 IP 주소 대신, 탄력적 IP 주소를 사용하는 것이 모범 사례입니다.

1.    SSH를 사용하여 EC2 인스턴스에 연결합니다.

2.    다음 명령을 실행하여 cloud-init가 설치되었는지 확인합니다.

sudo yum list installed cloud-init

cloud-init가 설치되지 않은 경우 다음 명령을 실행하여 설치합니다.

sudo yum install cloud-init

3.    Amazon EC2 콘솔을 열고 인스턴스를 선택합니다.

4.    [작업]을 선택하고 [인스턴스 상태]를 선택하고 [중지]를 선택합니다.

참고: [중지]가 비활성화된 경우 인스턴스가 이미 중지되었거나 해당 루트 디바이스가 인스턴스 스토어 볼륨이 됩니다.

5.    키 페어에서 퍼블릭 키를 검색합니다.

6.    [작업]을 선택하고 [인스턴스 설정]을 선택하고 [사용자 데이터 보기/변경]을 선택합니다.

7.    다음 스크립트를 복사하여 [사용자 데이터] 필드에 붙여넣습니다.

username에 새 사용자의 사용자 이름을 입력합니다. ssh-rsa AB3nzExample에 퍼블릭 키를 입력합니다.

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

참고: 기본적으로 cloud-init 명령은 인스턴스가 시작될 때만 실행됩니다. 그러나 이 사용자 데이터 스크립트를 사용하면 cloud-init는 인스턴스가 재부팅되거나 다시 시작될 때마다 인스턴스에 퍼블릭 키를 추가합니다. 사용자 데이터 스크립트를 제거하면 기본 기능이 복원됩니다.

8.    [저장]을 선택합니다.

9.    [작업]을 선택하고 [인스턴스 상태]를 선택하고 [시작]을 선택합니다.

10.    인스턴스가 실행 중 상태에 도달하면 새 사용자로 로그인합니다. 새 사용자의 기본 동작은 ec2-user와 동일합니다.

참고: 인스턴스의 사용자 데이터를 수정하는 경우 ModifyInstanceAttribute API 작업을 사용합니다. AWS Identity and Access Management(IAM) 정책을 생성하여 이 작업을 제한할 수 있습니다.