😒 저 저 저 개념없는 나/👻 햣햣 Git

[github action| AWS] .pem key secret setting , EC2 접속 | Mac

우주수첩 2024. 12. 5. 17:34
728x90

pre 

github action을 사용하여 ec2에 배포하는 것을 자동화 하는 테스트 진행 중

 

목적

ec2에 접속하기 위한 pem key 등록 및 접속

 

 

name: EC2 deploy

on:
  push:
    branches: ["main"]

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v4
    - name: Run Tests
      run:
        echo "hello world"

 

 

1. 레포 -> Setting -> Secrets and variables -> action 선택

- 깃허브 액션 용 시크릿 파일을 담아두게따.

 

 

 

2. New Repository secret -> 새로운 secret 정보 추가

 

  • 비밀리에 관리
  • 깃허브액션이 사용하는 과정 내에서 Pem 키를 볼 수 없음

 

 

 

 

3. pem key 적용 및 실행 결과 확인

name: EC2 deploy

on:
  push:
    branches: ["main"]

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v4
    - name: Run Tests
      run:|
        echo "hello world"
        echo "${{ secrets.EC2_PRIVATE_SECRET }}" > ec2-private-key.pem
        chmod 400 ec2-private-key.pem
  • secrets.EC2_PRIVATE_SECRET 파일을 가져와 ec2-private-key.pem 파일에 저장한다. 
  • 해당 pem파일에 대한 읽기 권한을 사용자에세 부여한다. 

 

 

 

 

  • secret 파일이라 보이지 않는 것을 확인 가능

 

 

4. ssh 사용 ec2 접속 관련 명령어 추가

  • ec2 인스턴스 세부 정보 -> 연결 -> ssh 클라이언트

  • ec2의 주소 복사

 

name: EC2 deploy

on:
  push:
    branches: ["main"]

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v4
    - name: Run Tests
      run: |
        echo "hello world"
        echo "${{ secrets.EC2_PRIVATE_SECRET }}" > ec2-private-key.pem
        chmod 400 ec2-private-key.pem
        ssh -i ec2-private-key.pem ubuntu@ec2-3-34-122-10.ap-northeast-2.compute.amazonaws.com

 

핑거 프린트 옵션 제거하기

... 일치하여 생략 ...
      run: |
        echo "hello world"
        echo "${{ secrets.EC2_PRIVATE_SECRET }}" > ec2-private-key.pem
        chmod 400 ec2-private-key.pem
        ssh -o StrictHostKeyChecking=no -i ec2-private-key.pem ubuntu@ec2-3-34-122-10.ap-northeast-2.compute.amazonaws.com '
          date > current_time.txt
          echo ls
        '

 

  • ssh -o StrictHostKeyChecking=no 를 사용하여 핑거프린트 옵션 제거
  • current_time.txt에 값을 넣음으로써 ssh 연결 이후의 명령어가 잘 실행 되는지 파악

 

 

야호

 

5. 동작 확인

  • pem 키의 권한이 너무 넓게 잡혀있어 ec2가 실행되지 않을 경우가 높다.
  • chmod 400 을 사용하여 권한 설정 변경 후 ssh로 접속한다.

 

 

$ chmod 400 spring-server-key.pem 
$ ls -al
total 8
drwxr-xr-x   3 hyejinkim  staff    96 12  5 17:20 .
drwx------+ 15 hyejinkim  staff   480 12  5 17:20 ..
-r--------@  1 hyejinkim  staff  1674 12  5 14:42 spring-server-key.pem
➜  $ ssh -i spring-server-key.pem ubuntu@ec2-3-34-122-10.ap-northeast-2.compute.amazonaws.com

 

 

야호

야아호

 

 

 

728x90