안녕하세요! 오늘은 AWS EC2 인스턴스를 더 쉽고 안전하게 관리할 수 있는 도구인 gossm
에 대해 알아보겠습니다. 이 도구를 사용하면 SSH 포트(22)를 열지 않고도 EC2 인스턴스에 연결하고 파일을 전송할 수 있어 보안성을 높일 수 있습니다.
gossm
은 AWS Systems Manager Session Manager를 기반으로 한 대화형 CLI 도구입니다. EC2 인스턴스에 쉽게 연결하고 SSH, SCP 등의 기능을 제공합니다. 기존 방식과 달리 SSH 포트를 열지 않고도 안전하게 서버에 접속할 수 있어 보안성이 높습니다.
ec2:DescribeInstances
ssm:StartSession
ssm:TerminateSession
ssm:DescribeSessions
ssm:DescribeInstanceInformation
ssm:DescribeInstanceProperties
ssm:GetConnectionStatus
ec2:DescribeRegions
권한도 있으면 좋습니다.이제 gossm을 설치하는 방법을 단계별로 알아보겠습니다.
macOS나 Linux에서는 Homebrew를 통해 쉽게 설치할 수 있습니다. 먼저 Homebrew가 설치되어 있지 않다면 설치합니다.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
설치 스크립트가 실행되면 안내에 따라 진행합니다. 비밀번호를 입력해야 할 수도 있습니다.
설치 후에는 환경 변수를 설정해야 합니다. 운영체제에 따라 다음 명령어를 실행하세요.
Linux (Ubuntu/Debian)의 경우:
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> ~/.profile
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
macOS(Apple Silicon - M1/M2/M3)의 경우:
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zshrc
eval "$(/opt/homebrew/bin/brew shellenv)"
macOS(Intel)의 경우:
echo 'eval "$(/usr/local/bin/brew shellenv)"' >> ~/.zshrc
eval "$(/usr/local/bin/brew shellenv)"
다음 명령어를 실행하여 Homebrew가 제대로 설치되었는지 확인합니다:
brew --version
Homebrew 버전이 출력되면 설치가 완료된 것입니다.
이제 Homebrew를 사용하여 gossm을 설치합니다:
# gossm 탭 추가
brew tap gjbae1212/gossm
# gossm 설치
brew install gossm
다음 명령어를 실행하여 gossm이 제대로 설치되었는지 확인합니다:
gossm --version
버전 정보가 출력되면 설치가 완료된 것입니다.
gossm을 사용하려면 AWS 자격 증명이 필요합니다. AWS 자격 증명 파일을 설정해 보겠습니다:
# AWS 자격 증명 디렉토리 생성
mkdir -p ~/.aws
# 자격 증명 파일 생성
cat > ~/.aws/credentials << EOF
[default]
aws_access_key_id = 당신의_AWS_ACCESS_KEY
aws_secret_access_key = 당신의_AWS_SECRET_KEY
EOF
또는 원하는 텍스트 에디터로 직접 ~/.aws/credentials
파일을 편집해도 됩니다.
이제 gossm을 사용하여 AWS EC2 인스턴스에 연결해 보겠습니다.
가장 기본적인 명령어는 start
입니다. 이 명령어를 실행하면 대화형 인터페이스가 나타나 연결할 수 있는 EC2 인스턴스 목록이 표시됩니다:
gossm start
위 명령어를 실행하면:
gossm 명령어에는 다음과 같은 공통 옵션이 있습니다:
옵션 | 설명 | 기본값 |
---|---|---|
-c | AWS 자격 증명 파일 경로 | $HOME/.aws/credentials |
-p | 사용할 AWS 프로필 | default |
-r | 연결할 AWS 리전 | (대화형으로 선택) |
예를 들어, 특정 프로필과 리전을 지정하려면 다음과 같이 실행합니다:
gossm start -p production -r ap-northeast-2
AWS 계정에 MFA가 설정되어 있다면, 다음과 같이 MFA 인증을 처리할 수 있습니다:
gossm mfa 123456 # MFA 코드 입력
MFA 인증을 사용하려면 다음 환경 변수 설정이 필요합니다:
echo 'export AWS_SHARED_CREDENTIALS_FILE=$HOME/.aws/credentials_mfa' >> ~/.bashrc
# 또는
echo 'export AWS_SHARED_CREDENTIALS_FILE=$HOME/.aws/credentials_mfa' >> ~/.zshrc
# 환경 변수 적용
source ~/.bashrc # 또는 source ~/.zshrc
gossm 명령어가 인식되지 않는 경우:
1. 터미널을 다시 열어보세요.
2. 또는 다음 명령어로 환경 변수를 다시 로드하세요:
source ~/.bashrc # bash 사용 시
# 또는
source ~/.zshrc # zsh 사용 시
AWS 자격 증명 오류가 발생하는 경우:
1. ~/.aws/credentials
파일이 올바르게 설정되었는지 확인하세요.
2. IAM 사용자에게 필요한 권한이 부여되었는지 확인하세요.
EC2 인스턴스에 연결할 수 없는 경우:
1. EC2 인스턴스에 SSM Agent가 설치되어 있는지 확인하세요.
2. 인스턴스에 AmazonSSMManagedInstanceCore
IAM 정책이 연결되어 있는지 확인하세요.
3. 인스턴스가 실행 중인지 확인하세요.
이제 gossm을 사용하여 AWS EC2 인스턴스에 안전하게 연결할 수 있게 되었습니다. 이 도구를 사용하면 SSH 포트를 열지 않고도 EC2 인스턴스를 관리할 수 있어 보안성을 높일 수 있습니다. 또한 대화형 인터페이스를 통해 쉽게 인스턴스를 선택하고 연결할 수 있습니다.