[AWS] ec2 서버에 사용자 추가해서 접속하도록 하는 방법

EnaZero·2024년 11월 26일
0

[AWS] AWS 기초

목록 보기
1/1

[배경] 프로젝트를 진행중에 다른 사용자가 ec2 서버에 직접 접근해서 배포된 프로젝트 폴더를 가상환경에서 실행해볼 수 있도록 해야했는데, aws 계정을 알려주는 방법은 2단계 인증에서 실패되고 번거롭기 때문에 사용자를 추가해서 권한을 부여해주는 방법을 찾게 되었다.

1. 접속 할 사용자가 실행할 것

1) 공개 키 생성

접속할 사용자는 공개 키를 생성해야 한다.

ssh-keygen -t rsa -b 4096 -C "email@address.com"

여기서 -t rsa는 RSA 형식의 키를 생성하는 것이다.
-b 4096: 4096비트 키를 생성하는 옵션이다.
-C "이메일 주소": 키 설명으로 사용할 이메일 추가.

이 명령어를 실행 시 다음과 같은 화면이 뜨게 된다.

Enter file in which to save the key (/home/username/.ssh/id_rsa): 

여기서 엔터를 누르면 id_rsa의 개인키와 id_rsa.pub의 공개키가 생성된다. 여기서 개인키는 절대 공유하면 안되고, 공개키만 공유해야 한다.

cat ~/.ssh/id_rsa.pub

이 명령어를 실행해서 공개키의 내용을 텍스트로 복사해 주고받을 수 있다. 혹은, 키 파일 자체로 공유받을 수 있다.

2. admin이 실행

서버를 만든 사람이 사용자를 생성해서 권한을 부여할 차례이다.

1) 사용자 생성

sudo adduser <username>

해당 사용자의 .ssh디렉토리 생성 및 authorized_keys 파일 생성

sudo mkdir -p /home/<username>/.ssh
sudo vi /home/<username>/.ssh/authorized_keys

nano로 하셔도 되고, vi로 하셔도 되는데 저는 vi가 더 익숙해서 vi로 했습니다.
텍스트 편집기가 열리면 a를 눌러 insert 상태로 바꾼후, 접속을 허용해줄 사용자가 생성한 공개키 텍스트를 붙여넣기 해줍니다. 이후 esc를 누르고 :wq를 입력해 저장하면 됩니다.

2) 권한 부여

sudo chmod 700 /home/<username>/.ssh
sudo chmod 600 /home/<username>/.ssh/authorized_keys
sudo chown -R <username>:<username> /home/<username>/.ssh

여기서 chmod는 권한 설정 명령어 입니다.

  • chmod 700은 모든 권한을 부여하는 것이고,파일/디렉토리에 대해 소유자만 모든 권한(읽기, 쓰기, 실행)을 가질 수 있고, 다른 사용자들은 접근할 수 없습니다.

  • chmod 600는 파일에 대해 소유자는 읽기와 쓰기가 가능하지만, 실행은 불가능하며, 다른 사용자들은 접근할 수 없습니다.

  • -R은 디렉토리와 그 모든 하위 파일에 대해 재귀적으로 적용하는 옵션입니다.

  • chown: 파일의 소유자(owner)그룹(group)을 변경합니다.

  • <username>:<username>: 소유자와 그룹을 <username>으로 변경합니다.
    - 첫 번째 : 해당 파일/디렉토리의 소유자(owner)를 설정.
    - 두 번째 : 해당 파일/디렉토리의 그룹(group)을 설정.

3) 프로젝트 접근 허용

sudo groupadd projectusers
sudo usermod -aG projectusers <username>
sudo chown -R :projectusers <프로젝트 path>
sudo chmod -R 770 <프로젝트 path>
  • usermod: 사용자 계정을 수정할 때 사용하는 명령어.
  • -a(append):사용자를 기존 그룹에 추가할 때 기존 그룹 정보를 유지하면서 새 그룹을 추가합니다.
    옵션이 없으면 사용자가 새 그룹에 추가되면서 기존 그룹에서 제거됩니다. 따라서 항상 -a를 사용하는 것이 안전합니다.
  • -G:사용자를 추가할 보조 그룹(supplementary group)을 지정합니다.
  • chmod 770는 소유자와 같은 그룹에 속한 사용자들은 파일/디렉토리를 읽고, 쓰고, 실행할 수 있습니다. 하지만 그룹 외 다른 사용자들은 접근할 수 없습니다. 보통 프로젝트 팀의 공용 디렉토리로, 같은 그룹 사용자들에게만 모든 권한을 부여할 때 사용합니다.

2. 접속 (사용자)

ssh -i <private key 파일 path> <username>@<EC2_Public_IP>
  • EC2의 퍼블릭 아이피로 접속해야하는것에 유의해야 합니다.

주의) 인바운드 규칙 수정 (admin)

서버를 만든 사람은 해당 aws ec2 콘솔에서 해당 ec2 인스턴스 보안그룹의 인바운드 규칙을 수정해야 합니다.
ssh에 대해 0.0.0.0/0 (모든 ip에 대해 허용)으로 바꿔둬야 합니다.
보안성을 더 높이고 싶은 분들은 접속할 사용자의 ip주소에 대해서만 허용해두시는게 좋습니다.

0개의 댓글