AWS EC2 인스턴스(우분투 OS)에 SSH로 접속하는 방법을 정리했습니다. 🚀


cd C:\Users\hwija\Downloads
dir
AWS EC2에 연결하려면 로컬 터미널에서 아래 명령어를 실행하면 됩니다.
ssh -i "myServerKey.pem" ubuntu@ec2-43-201-64-159.ap-northeast-2.compute.amazonaws.com
cd ~/Downloads # 예시 (키 파일이 있는 폴더로 이동)chmod 400 myServerKey.pemssh -i "myServerKey.pem" ubuntu@ec2-43-201-64-159.ap-northeast-2.compute.amazonaws.comWelcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.15.0-1033-aws x86_64)
ubuntu@ip-xxx-xx-xx-xxx:~$ 이렇게 나오면 EC2에 정상적으로 접속된 것입니다! 🎉Permission denied (publickey). ✅ 해결 방법키 파일 권한을 제한하는 명령어 실행 후 다시 시도
chmod 400 myServerKey.pem
키 파일이 올바른 위치에 있는지 확인
```
ls -l myServerKey.pem # 파일이 있는지 확인
```
❌ 에러 메시지 예시
ssh: connect to host ec2-43-201-64-159.ap-northeast-2.compute.amazonaws.com port 22: Connection timed out
✅ 해결 방법
AWS 콘솔 → EC2 → 보안 그룹 → 인바운드 규칙 확인
0.0.0.0/0 (또는 내 IP) 설정EC2 인스턴스가 실행 중인지 확인
- Running 상태인지 체크
SSH 접속이 완료되면 이제 기본 환경 설정을 해야 합니다.
sudo apt update && sudo apt upgrade -y
💡 최신 패키지로 업데이트하고 보안 패치도 적용하는 과정입니다.
sudo apt install -y openjdk-17-jdk
java -version # 설치 확인
💡 Spring Boot 실행을 위해 JDK 17을 설치해야 합니다.
sudo apt install -y git
git --version # 설치 확인
💡 원격 저장소에서 코드를 가져올 때 필요합니다.
sudo apt install -y docker.io
sudo systemctl start docker
sudo systemctl enable docker
docker --version # 설치 확인
sudo chmod 666 /var/run/docker.sock
💡 나중에 PostgreSQL을 Docker로 실행할 거라 미리 설치해 두면 좋습니다.
이제 권한 문제를 해결했으므로, 원하는 이미지를 다운로드 할 수 있습니다. 아래 명령어를 실행하여 PostgreSQL 이미지 16.6 버전을 다운로드합니다:
docker pull postgres:16.6
도커 권한 오류 발생
### **1. 도커 이미지 다운로드 시 권한 오류 발생**
### **문제**
- 도커 이미지를 다운로드(`docker pull`) 하려고 할 때, 아래와 같은 권한 오류가 발생할 수 있습니다:
```
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock
```
### **원인**
- Docker 명령어를 실행할 권한이 없는 사용자로 실행하고 있기 때문에 발생하는 오류입니다. 기본적으로 Docker는 `docker` 그룹에 속한 사용자만 접근할 수 있습니다.
---
### **2. 권한 오류 해결 방법**
### **해결 방법**
1. **Docker 그룹에 현재 사용자 추가**
- Docker를 사용하려면, 현재 사용자가 `docker` 그룹에 속해야 합니다. 이를 위해 아래 명령어로 사용자를 `docker` 그룹에 추가합니다:
```bash
sudo usermod -aG docker $USER
```
2. **세션 종료 후 재로그인**
- 사용자 그룹 변경 사항을 적용하려면 세션을 종료하고 다시 로그인해야 합니다. 현재 SSH 세션을 종료하려면 아래 명령어를 입력합니다:
```bash
exit
```
- 다시 SSH로 EC2 인스턴스에 접속하여 권한이 적용되었는지 확인합니다.
3. **권한 확인 후 다시 시도**
- Docker 그룹에 추가한 후, 다시 `docker pull` 명령어를 실행하여 문제가 해결되었는지 확인합니다:
```bash
docker pull postgres:16.6
```
PostgreSQL 이미지를 성공적으로 다운로드한 후, 이제 Docker에서 컨테이너를 실행해야 합니다. 아래 명령어를 사용하여 컨테이너를 실행합니다:
docker run --name my-postgres \
-e POSTGRES_USER=pinup \
-e POSTGRES_PASSWORD=rlaehgmlWkd0106 \
-e POSTGRES_DB=pinup \
-e TZ=Asia/Seoul \
-v my_postgres_data:/var/lib/postgresql/data \
-p 5432:5432 \
-d postgres:16.6
-name my-postgres: 컨테이너 이름을 my-postgres로 설정.
e POSTGRES_USER=pinup0106: PostgreSQL의 사용자 이름 설정.
e POSTGRES_PASSWORD=rlaehgmlWkd0106: PostgreSQL 사용자 비밀번호 설정.
e POSTGRES_DB=pinupdb: 기본 데이터베이스 이름 설정.
e TZ=Asia/Seoul: 타임존을 한국 시간(Seoul)으로 설정.
v my_postgres_data:/var/lib/postgresql/data: 데이터 지속성을 위해 Docker 볼륨을 설정.
p 5432:5432: 호스트와 컨테이너의 5432 포트를 연결.
d: 백그라운드에서 실행.
sudo apt install -y awscli
aws --version # 설치 확인
💡 AWS S3와 연결할 때 필요한 도구입니다.
git clone <GitHub Repository URL>
cd <프로젝트 폴더>
💡 GitHub에서 프로젝트 코드를 가져와야 합니다.
application.yml 파일 생성 및 수정 과정application.yml 파일 생성하기application.yml 파일을 생성하려면, vi 편집기를 사용하여 파일을 작성할 수 있습니다.application.yml 파일 생성 명령어bash
복사편집
cd ~/pinup/src/main/resources # 프로젝트 디렉토리로 이동
vi application.yml # vi 편집기로 application.yml 파일 열기
application.yml 파일 수정하기application.yml 파일을 수정하려면 아래 단계를 따르세요.yaml
복사편집
datasource:
driver-class-name: org.postgresql.Driver
url: jdbc:postgresql://<EC2-IP>:5432/pinup # EC2 공인 IP 주소로 수정
username: pinup
password: rlaehgmlWkd0106
<EC2-IP>를 EC2의 실제 공인 IP 주소로 수정합니다.
AWS S3 연결을 위해, S3 엔드포인트를 수정하고 AWS IAM 사용자의 Access Key와 Secret Key를 설정합니다.
서울 리전 엔드포인트는 https://s3.ap-northeast-2.amazonaws.com입니다.
yaml
복사편집
cloud:
aws:
s3:
bucket: bucket0127 # 생성한 S3 버킷 이름
endpoint: https://s3.ap-northeast-2.amazonaws.com # 서울 리전 엔드포인트
region.static: ap-northeast-2 # 리전 설정
stack.auto: false
AWS IAM 사용자의 Access Key와 Secret Key를 환경 변수로 설정하려면, 아래와 같이 설정할 수 있습니다. IAM 사용자 인증 정보를 사용하여 AWS에 연결합니다.
yaml
복사편집
cloud:
aws:
credentials:
accessKey: ${AWS_ACCESS_KEY_ID} # 환경 변수에서 읽어오기
secretKey: ${AWS_SECRET_ACCESS_KEY} # 환경 변수에서 읽어오기
환경 변수 AWS_ACCESS_KEY_ID와 AWS_SECRET_ACCESS_KEY를 EC2에서 설정해 줍니다.
vi 사용법vi 편집기를 사용하여 application.yml 파일을 수정하려면 아래 절차를 따르세요.
파일 열기:
bash
복사편집
vi application.yml
편집 모드로 전환:
i를 눌러 편집 모드로 들어갑니다.수정 후 저장하고 종료:
Esc 키를 눌러 명령 모드로 돌아갑니다.:wq를 입력한 후 Enter를 눌러 파일을 저장하고 종료합니다.수정 취소하고 종료:
Esc 후 :q!를 입력하여 저장하지 않고 종료합니다../gradlew clean build -x test
chmod +x gradlew # 권한 필요하면

💡RAM과 프로그램 실행의 관계
RAM은 실행중인 프로그램의 속도와 실행과 관련이 있다.
그래서 만약 프로그램이 잡아먹는 RAM이 컴퓨터의 RAM의 크기를
초과한다면 해당 프로그램이 더디게 실행되거나 실행이 안될 수도 있는 것이다.
dd 명령어를 사용합니다. 예를 들어, 4GB 크기의 스왑 파일을 생성하려면 아래 명령어를 사용하세요:bash
복사편집
sudo dd if=/dev/zero of=/swapfile bs=128M count=32
if=/dev/zero: 0 바이트를 읽어옵니다.
of=/swapfile: /swapfile 파일을 생성하여 데이터를 씁니다.
bs=128M: 블록 크기를 128MB로 설정합니다.
count=32: 128MB 블록을 32번 작성하여 총 4GB 크기의 스왑 파일을 만듭니다.
생성된 스왑 파일의 권한을 수정하여 읽기 및 쓰기만 가능하게 합니다:
bash
복사편집
sudo chmod 600 /swapfile
생성된 스왑 파일을 시스템에서 사용할 수 있도록 포맷합니다:
bash
복사편집
sudo mkswap /swapfile
이제 스왑 파일을 활성화하여 시스템에서 사용할 수 있게 합니다:
bash
복사편집
sudo swapon /swapfile
활성화된 스왑 파일을 확인하려면 아래 명령어를 입력합니다:
bash
복사편집
sudo swapon -s
이 명령어를 실행하면, 현재 사용 중인 스왑 공간의 목록이 표시됩니다.
시스템이 재부팅될 때마다 스왑 파일이 자동으로 활성화되도록 설정하려면 /etc/fstab 파일을 수정해야 합니다. 아래 명령어로 파일을 편집합니다:
bash
복사편집
sudo vi /etc/fstab
파일 끝에 다음 줄을 추가하고 저장 후 종료합니다:
bash
복사편집
/swapfile swap swap defaults 0 0
우분투에서 스왑 파일을 생성하고 설정하는 과정은 다음과 같습니다:
dd 명령어로 스왑 파일 생성chmod 명령어로 권한 수정mkswap 명령어로 스왑 영역 설정swapon 명령어로 스왑 활성화/etc/fstab 파일을 수정하여 부팅 시 자동으로 스왑 파일이 활성화되도록 설정