SSH 전문가처럼: EC2 인스턴스에 격리된 사용자 생성 (문제 없이)

발행: (2026년 1월 31일 오후 05:05 GMT+9)
5 분 소요
원문: Dev.to

Source: Dev.to

한 서버에 여러 프로젝트를 배포해 본 적이 있다면, 다음과 같은 긴장을 느꼈을 것입니다:

“새로운 것이 기존에 실행 중인 것에 방해가 되지 않게 하고 싶다.”

바로 제가 처한 상황이었습니다:

  • 기존 EC2 인스턴스
  • 큰 프로젝트를 실행 중인 메인 사용자
  • 깨끗하고 안전하게 배포하고 싶은 새롭고 작은 서비스

해결책은 Docker나 Kubernetes가 아니었습니다. 훨씬 간단한—리눅스 사용자 + SSH 키—를 올바르게 사용하는 것이었습니다.

Goal

  • 새로운 리눅스 사용자(cc) 생성
  • 해당 사용자 아래에 새 프로젝트 격리
  • SSH를 통해 cc로 직접 로그인
  • 모든 것을 안전하고 전문적으로 유지 – 해킹도, 지름길도 금지

1. 기존 사용자로 서버에 SSH 접속

ssh your-current-user@your-ec2-ip

2. 새 사용자 만들기

sudo adduser cc          # 비밀번호와 선택적 정보를 입력하라는 프롬프트가 표시됩니다
sudo usermod -aG sudo cc # (선택 사항이지만 권장) sudo 권한 부여

이 시점에서 cc 사용자는 존재하지만 아직 SSH로 접속할 수 없습니다.

3. SSH 인증이 어떻게 동작하는지 이해하기

  • SSH는 개인 키를 소유하고 있음을 증명합니다.
  • 서버는 대상 사용자의 ~/.ssh/authorized_keys에 일치하는 공개 키가 있는지 확인합니다.
  • 공개 키가 목록에 없으면 로그인은 거부됩니다.

cc와 같은 새 사용자는 허용 목록이 비어 있습니다.

현재 SSH 연결을 자세히 확인하려면 다음과 같이 실행해 보세요:

ssh -v your-current-user@your-ec2-ip

다음과 같은 라인이 보일 것입니다:

Offering public key: ~/.ssh/backend-key

이는 노트북이 어떤 개인 키를 사용하고 있는지 알려줍니다. 해당 공개 키는 ~/.ssh/backend-key.pub입니다. 새 사용자에게는 이 키만 사용해야 합니다.

4. cc용 SSH 디렉터리와 authorized_keys 설정

# On the server
sudo mkdir -p /home/cc/.ssh
sudo chmod 700 /home/cc/.ssh
sudo chown cc:cc /home/cc/.ssh

# Create the authorized_keys file
sudo nano /home/cc/.ssh/authorized_keys

로컬에 있는 backend-key.pub 파일 전체 내용을 authorized_keys에 붙여넣고, 권한을 수정합니다:

sudo chown cc:cc /home/cc/.ssh/authorized_keys
sudo chmod 600 /home/cc/.ssh/authorized_keys

5. 새 로그인 테스트

로컬 머신에서:

ssh cc@your-ec2-ip

모든 설정이 올바르면 🎉가 뜰 것입니다. 확인해 보세요:

whoami   # 출력: cc
pwd      # 출력: /home/cc

6. (Optional) ~/.ssh/config에 단축키 추가

Host cc-ec2
    HostName your-ec2-ip
    User cc
    IdentityFile ~/.ssh/backend-key

이제 간단히 실행할 수 있습니다:

ssh cc-ec2

Benefits of this approach

  • 프로젝트 간 완전한 격리 – 별도 환경 및 의존성
  • 문제 발생 시 영향 범위 감소
  • 확장 가능한 설정 – 성장에 맞게 확장 가능
  • 전문적인 보안 – SSH 키는 무차별 대입 및 피싱에 강하고, 클라우드 환경의 산업 표준
  • 필요 시 비밀번호 SSH를 완전히 비활성화하고, sudo 용 비밀번호만 남길 수 있음

당신은 단순히 “SSH를 작동시켰다”가 아니라, 전문가가 서버를 구성하는 방식을 구현했습니다: 사용자 수준에서 정체성과 신뢰를 관리하는 것이죠. 이 사고 모델이 잡히면, SSH는 마법이 아니라 다중 서비스 서버를 위한 견고하고 신뢰할 수 있는 도구가 됩니다.

Happy hacking 🚀

Back to Blog

관련 글

더 보기 »