목차

배경

저는 github action에서 server로 ssh 연결을 하고 docker compose를 통해 컨테이너를 실행하도록 했습니다. 그 과정에서 이론은 매우 간단하지만 해결은 매우 어려웠던 이야기 시작합니다…

과정

문제 발생(였지만 문제인지 몰랐던…)

저는 server에 ssh로 원격 접속을 할 때 pem키가 제대로 동작하지 않는 상황이었습니다.

Untitled

보시면 알겠지만, Server refused our key라고 뜨며 대신 password를 입력하도록 하는 것을 볼 수 있죠.

하지만 저는 바보 같이 그냥 password 입력하면 되겠지. 라고, 생각하며 password를 입력하고 연결했습니다. 그래도 문제없이 잘 동작했거든요…

찐 문제 발생

github action에서는 ssh 연결하기 위해 appleboy/ssh-action@master 를 사용합니다.

- name: Deploy to server
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.SERVER_HOST }}
          username: ${{ secrets.SERVER_USERNAME }}
          key: ${{ secrets.SERVER_KEY }}
          port: ${{ secrets.SERVER_PORT }}
          script: |
            cd compose
            sudo docker rm -f $(sudo docker ps -qa)
            sudo docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_TOKEN }}
            sudo docker pull ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPO }}:${{github.sha}}
            sudo docker tag ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPO }}:${{github.sha}} ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPO}}:latest
            sudo docker compose up -d
            sudo docker image prune -af

ssh연결을 하기 위해선 host, username, port 그리고 key가 필요합니다.