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
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
참고한 사이트
- 리눅스에서 서버에 접속하기 ssh 명령어 https://gr-st-dev.tistory.com/297
- SSH known_host 메모 https://bcho.tistory.com/1227
- SSH 인증 방식 https://nayoungs.tistory.com/entry/SSH-인증-방식
- ssh로 원격 명령 실행 https://young-cow.tistory.com/35
- https://chatgpt.com
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.