포스트

Github Actions - SSH 연결하기

github actions에서 ssh 연결을 하기 위한 방법을 기록


1. appleboy/ssh-action 라이브러리 사용

Github Marketplace : https://github.com/marketplace/actions/ssh-remote-commands


라이브러리를 사용하면 간단한 옵션 설정으로 ssh 접근을 할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
jobs:  
  appleboy-ssh:  
    runs-on: ubuntu-latest  
    steps:  
      - name: ssh 연결 - ssh key 사용  
        uses: appleboy/ssh-action@v1.0.3  
        with:  
          host: ${{ secrets.STUDY_INSTANCE_HOST }}  
          username: ${{ secrets.STUDY_INSTANCE_USERNAME }}  
          key: ${{ secrets.STUDY_INSTANCE_SSH_KEY }}  
          port: ${{ secrets.STUDY_INSTANCE_PORT }}  
          script: |  
            echo "Hello"  
            pwd  
            ls -al  
        
      - name: ssh 연결 - 비밀번호 사용  
        uses: appleboy/ssh-action@v1.0.3  
        with:  
          host: ${{ secrets.ZHYUNKIM_HOST }}  
          username: ${{ secrets.ZHYUNKIM_USERNAME }}  
          password: ${{ secrets.ZHYUNKIM_PASSWORD }}  
          port: ${{ secrets.ZHYUNKIM_PORT }}  
          script: |  
            echo "Hello"  
            pwd  
            ls -al 

image image


2. ssh 명령어로 직접 접근

리눅스의 ssh 명령을 사용하여 접속하는 방법

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
jobs:  
  
  ssh:  
    runs-on: ubuntu-latest  
    env:  
      SSH_HOME: /home/runner/.ssh  
    steps:  
      - name: key 파일 생성  
        run: |  
          mkdir -p -v $SSH_HOME  
          echo "${{ secrets.STUDY_INSTANCE_SSH_KEY }}" > $SSH_HOME/ec2-study.pem  
        
      - name: key 파일 권한 설정  
        run: sudo chmod 400 $SSH_HOME/ec2-study.pem  
        
      - name: 서버의 공개키 정보를 'ssh known_hosts'에 저장
        run: ssh-keyscan -t rsa -H ${{ secrets.STUDY_INSTANCE_HOST }} > $SSH_HOME/known_hosts  
          
      - name: ssh 호스트 서버에서 실행할 쉘 스크립트 run-script.sh 작성  
        run: |  
          echo 'echo "Hello"' > run-script.sh  
          echo 'pwd' >> run-script.sh  
          echo 'ls -al' >> run-script.sh  
          
          chmod +x run-script.sh  
        
      - name: run-script.sh 실행 테스트  
        run: ./run-script.sh
        
      - name: ssh 접속  
        run: |  
          ssh \  
          -i $SSH_HOME/ec2-study.pem \  
          -p ${{ secrets.STUDY_INSTANCE_PORT }} \  
          ${{ secrets.STUDY_INSTANCE_USERNAME }}@${{ secrets.STUDY_INSTANCE_HOST }} \
          < ./run-script.sh 

image




참고한 사이트

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.