[Github Actions] 외부 서버에 SSH로 접속해서 커맨드 실행하기

달달칩·2020년 10월 29일
3
post-thumbnail

요즘 한창 운영중인 서비스나 프로젝트에 대해서 자동화 작업을 많이 하고 있다.

그중에서도 Actions에 붙이는 작업을 많이 하고 있는데,

컨테이너가 거의 10개가 넘어가는 Docker-compose 로 구성되어있는 프로젝트를 어떻게 배포를 할까 고민을 하다가 결국 ssh 로 접속해서 커맨드를 일부 실행 하기로 했다.

AWS를 썼다면 좀더 쉬웠겠지만 이것은 다른 서버를 사용하고 있으므로 이 방법이 가장 나을 것 같았다.

어쨌든 나처럼 어떤이유에서든 Actions 실행시 SSH 접속 + 외부서버에서 커맨드 실행을 해야 하는 작업이 있을 수 있다.

이때 Actions 에서도 역시 해당 작업이 가능하다.

ssh-action

구글링을 해보니 이 프로젝트의 스타가 많이 박혀있어서 이걸로 결정했다.

위 레포에는 제작자가 써놓은 사용법이 나와있고 간단하게 요약하면 아래와 같이 사용이 가능하다.

      - name: Deploy
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.REMOTE_IP }}
          username: ${{ secrets.REMOTE_SSH_ID }}
          key: ${{ secrets.REMOTE_SSH_KEY }}
          port: ${{ secrets.REMOTE_SSH_PORT }}
          script: |
            whoami
            git pull origin master

레포지토리 Settings -> Secrets 설정 페이지로 들어가서 호스트, 유저명, SSH Private Key, 포트번호를 세팅해준다.

참고로 이 방법을 사용하려면 먼저 SSH용 Public key, Private Key를 세팅해두고 SSH에 접속할 수 있도록 설정해둬야 한다. (private 키 세팅 방법은 레포의 Setting up SSH Key 참고) 귀찮다면 SSH Password 로도 세팅이 가능하니 레포를 참고하자.

  • REMOTE_IP : 대상 아이피
  • REMOTE_SSH_ID : 접속할 대상
  • REMOTE_SSH_KEY : Private Key
  • REMOTE_SSH_PORT : 포트번호 (22번이 일반적인 ssh 포트)

이렇게 하면 정말 쉽게 ssh 사용이 가능하다!

profile
보안과 개발을 둘다 잘 하고 싶은 사람입니다.

0개의 댓글