SSH를 사용하여 Amazon Elastic Compute Cloud(Amazon EC2) Linux 인스턴스에 연결할 수 있는 추가 사용자를 만들려고 합니다.
간략한 설명
다음 작업을 수행하는 사용자 데이터 명령을 포함시킵니다.
- 새 사용자를 만듭니다.
- 사용자에게 sudo 권한을 부여합니다.
- authorized_keys 파일에 SSH 퍼블릭 키를 추가합니다.
해결 방법
중요: 인스턴스를 변경하기 전에 다음을 검토하십시오.
다음 단계를 완료하십시오.
-
SSH 또는 Session Manager를 사용하여 인스턴스에 로그인합니다.
-
cloud-init이 설치되었는지 확인하려면 다음 명령을 실행합니다.
$ cloud-init -v
명령에서 오류가 반환되면 다음 명령을 실행하여 Linux 배포판에 인스턴스를 설치합니다.
Debian 기반 인스턴스의 경우
$ sudo apt-get install cloud-init
RPM 기반 인스턴스의 경우
sudo dnf install cloud-init
Suse 인스턴스의 경우
zypper install cloud-init
-
cloud-init의 설치를 확인한 후 계속해서 인스턴스를 중지합니다.
참고: 중지 작업을 사용할 수 없는 경우 인스턴스가 이미 중지되었거나 해당 루트 디바이스가 인스턴스 저장소 볼륨입니다.
-
프라이빗 키에서 퍼블릭 키를 생성하여 새 사용자에게 연결합니다.
참고: 퍼블릭 키를 받으려면 키 페어 또는 프라이빗 키가 있어야 합니다. 키 페어를 생성하려면 Amazon EC2 인스턴스용 키 페어 생성을 참조하십시오. SSH 보안을 위해서는 EC2 콘솔 또는 타사 도구를 통해 키 페어를 생성하는 것이 좋습니다.
퍼블릭 키를 검색하려면 다음 명령을 실행합니다. 프라이빗 키에 암호가 있는 경우 메시지가 표시되면 해당 암호를 입력합니다.
$ ssh-keygen -f <private_key_file> -y
-
다음 명령에 퍼블릭 키를 삽입한 후 이 명령으로 user-data 필드를 업데이트합니다.
인스턴스를 선택합니다.
탐색 창에서 작업을 선택한 다음, 인스턴스 설정을 선택합니다.
사용자 데이터 편집을 선택한 다음, 필드에 스크립트를 붙여넣습니다.
참고: 자리 표시자 username을 사용하려는 사용자 이름으로 바꾸십시오. ssh-rsa AB3nzExample의 경우, 퍼블릭 키를 입력합니다. Debian 인스턴스를 사용하는 경우 groups 값을 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 웹 사이트에서 클라우드 구성 예제를 참조하십시오.
참고: 기본적으로 클라우드 초기화 지시어는 인스턴스가 시작될 때만 실행됩니다. 그러나 이 사용자 데이터 스크립트를 사용하면 클라우드 초기화는 인스턴스가 재부팅되거나 다시 시작될 때마다 인스턴스에 공개 키를 추가합니다. 사용자 데이터 스크립트를 제거하면 기본 기능이 복원됩니다.
-
저장을 선택합니다.
-
작업을 선택하고 인스턴스 상태를 선택한 다음, 시작을 선택합니다.
-
인스턴스가 실행 중 상태에 도달하면 새 사용자로 로그인합니다. 새 사용자는 ec2-user와 기본 동작이 동일합니다.
참고: ModifyInstanceAttribute API 작업을 사용하여 인스턴스의 사용자 데이터를 수정하십시오. AWS Identity and Access Management(IAM) 정책을 생성하여 이 작업을 제한하십시오.
관련 정보
키 쌍 표시
Amazon EC2 Linux 인스턴스에 SSH 액세스 권한이 있는 새 사용자 계정을 추가하려면 어떻게 해야 합니까?