티스토리 뷰

클라우드

SSH, SCP 명령어 정리

tioon 2024. 3. 2. 00:05

이번 블로그에서는 

터미널에서 SSH와 SCP를 직접 어떻게 사용하는지, 또한, 깃허브 액션에선 SSH와 SCP를 어떻게 사용하는지에 대해서 알아 보겠습니다.

사실 저희가 서버를 배포를 한다고 하면, SSH와 SCP 둘 다 사용할 일이 많잖아요??
하지만 그럴때마다 까먹어서 구글링 하느라 시간 다쓴 적 있지않나요?


저도 서버 배포를 하면서 매번 SSH, SCP를 사용하는데 그때마다 까먹어서 자료 찾는게 귀찮아서 이번에 한번 제대로 공부하고, 까먹을 때마다 보려고 합니다 ㅎㅎ

 

우선 터미널 상에서 SSH와 SCP를 어떻게 사용하고, 옵션은 어떻게 활용하는지에 대해서 정리를 한 후,

추가적으로, 깃허브 액션에서는 어떻게 SSH와 SCP를 활용할 수 있는지에 대해서 정리를 해보도록 하겠습니다.

 

 

SSH

 

SSH 기본 사용법
ssh -i [보안키.pem] -p [포트번호] [원격 계정]@[원격지 IP]

 

위의 명령어에서 빨간색이 ssh 기본 명령어구조입니다. 기본적으로 ssh가 안전하게 다른 서버에 연결을 하는 것이니, 저희는 기본적은 정보를 넣어서 ssh 연결을 시도하게 됩니다.

  • 원격 계정 
    - 접속할 원격 서버의 계정입니다. ubuntu, root 등등 다양한 이름이 있을 수 있습니다.
  • 원격지 IP
    - 접속할 원격 서버의 IP주소입니다. (공인 IP를 적으셔야 해요)

 

이렇게 하면 해당 서버에 SSH 접속을 할 수 있을까요??

 

아쉽게도 위의 기본 명령어만으로는 SSH 접속을 할 수 없습니다.
추가옵션을 설정해야 SSH 접속을 할 수 있어요.
위에서 파랑색이 옵션 입니다.

 

 SSH엔 다양한 옵션이 있지만, 저희는 진짜 많이 쓰는 2개만 정리해보도록 하겠습니다.

옵션 설명
-p SSH 접속 포트 설정하는 옵션
-i 보안키(pem) 설정하는 옵션

 

위 두가지가 ssh접속할때 필수적으로 많이 쓰이는 옵션입니다.

 

 

 

SCP
SCP 기본 사용법
scp -i [보안키.pem] -p [포트번호] [전송 파일경로] [원격 계정]@[원격지 IP]:[도착 파일경로]

 

위의 명령어에서 빨간색이 scp 기본 명령어 구조입니다. SCP는 SSH와는 다르게 원격으로 접속하는 것이 아닌, 파일 전송이기떄문에 전송할 파일의 정보와 도착할 파일 위치정보가 필요합니다.

  • 원격 계정 
    - 접속할 원격 서버의 계정입니다. ubuntu, root 등등 다양한 이름이 있을 수 있습니다.
  • 원격지 IP
    - 접속할 원격 서버의 IP주소입니다. (공인 IP를 적으셔야 해요)
  • 전송 파일 경로
    - 전송할 파일의 경로입니다. 상대주소도 가능하고, 절대 주소도 가능합니다.
  • 도착 파일 경로
    - 원격지에 도착 경로입니다. 어느 위치에 저장하게 할지 정할 수 있습니다.

 

SSH와 똑같이 -i와 -p 옵션으로 보안키와 포트 번호를 설정하여 안전하게 파일이 전송될 수 있게 합니다.

 

 

 

 

 

SSH-ACTION

ssh-action은 깃허브에서 쓸 수 있는 액션 중 하나입니다. ssh를 좀더 쉽게 사용하여 원격 서버에 연결을 쉽게 할 수 있게 합니다.
즉, ssh를 액션을 통해 좀더 사용자가 정해진 양식대로 좀더 쉽게 사용할 수 있는 것 입니다.

 

그럼 이제 ssh-action의 활용법을 알아보겠습니다. 
기본적인 전체 코드는 다음과 같으며, 파랑색의 코드들이 주로 많이 쓰이는 옵션입니다.

 

- name: SSH Action
  uses: appleboy/ssh-action@v2
  with:
    host: ${{ secrets.SSH_HOST }}
    username: ${{ secrets.SSH_USERNAME }}
    password: ${{ secrets.SSH_PASSWORD }}
    port: ${{ secrets.SSH_PORT }}
    script: |
      echo "Hello, SSH!"
    privateKey: ${{ secrets.SSH_PRIVATE_KEY }}
    passphrase: ${{ secrets.SSH_PASSPHRASE }}
    args: '-o StrictHostKeyChecking=no'
    timeout: '120s'

 

위에 나와있는 옵션들의 정보는 다음과 같습니다.

  • uses
    -사용할 액션 지정하는 옵션
  • host
    -SSH로 연결할 호스트 주소 지정
  • username
    -SSH 연결에 사용할 사용자 이름 지정
  • password
    -SSH 연결에 사용할 비밀번호 지정
  • port
    -SSH 연결에 사용할 포트번호 지정 (기본값은 22입니다.)
  • script
    -SSH 연결 이후에, 원격 서버에서 실행할 스크립트를 지정. (해당 서버의 OS에 맞게 스크립트를 작성해야 합니다.)
  • privateKey
    -SSH 연결에 사용할 개인키(.pem 파일)을 지정
  • args
    -SSH 명령에 추가로 전달할 인수를 지정
  • timeout
    -SSH 연결 시도 시간 지정 (기본값은 30초)

 

 

 

 

SCP-ACTION

scp-action은 위에서 설명한것과 똑같이, scp를 좀더 사용하기 쉽게 만들어 놓은 액션입니다.
ssh-action과 유사하게, 코드 몇줄로 scp를 가독성 있게 구현할 수 있습니다.

 

그럼이제 scp-action의 활용법을 알아보겠습니다.
기본적인 전체 코드는 다음과 같으며, 파랑색의 코드들이 주로 많이 쓰이는 옵션입니다.

 

- name: SCP Action
  uses: appleboy/scp-action@master
  with:
    source: './file.txt'
    target: '/remote/path/'
    host: ${{ secrets.SSH_HOST }}
    username: ${{ secrets.SSH_USERNAME }}
    password: ${{ secrets.SSH_PASSWORD }}
    port: ${{ secrets.SSH_PORT }}
    privateKey: ${{ secrets.SSH_PRIVATE_KEY }}
    passphrase: ${{ secrets.SSH_PASSPHRASE }}
    args: '-o StrictHostKeyChecking=no'
    timeout: '120s'

 

ssh-action에서 옵션들을 많이 설명한 관계로, 이미 설명했던 것들은 하지않고, 새롭게 추가된것만 정리하겠습니다.

  • source
    -로컬 시스템에서 원격지로 전달할 파일의 경로를 지정
  • target
    -원격지에 전달받을 경로를 지정

또한, ssh-action과 다르게, scp는 파일전송만 하는 것이기 때문에 script옵션이 따로 존재하지 않습니다.

즉, 파일은 전송한 후 다른 작업을 하지 못합니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
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
글 보관함