scp(secure copy)

scp는 로컬 호스트와 원격 호스트 또는 두 개의 호스트 간에 파일을 전송하는 수단이다. 

SSH(Secure Shell)을 통한 파일 전송 방식이며 별도의 FTP 클라이언트를 설치하지 않아도 파일 송수신이 가능하다.

파일 전송을 하기 위해 비슷한걸로 rsync라는 것도 있다고 한다.

여기서는 scp를 통해 로컬에서 빌드한 jar 파일을 EC2 인스턴스로 전송해보도록 한다.


1. 스프링 빌드 파일 생성

1-1. 스프링 프로젝트 경로로 이동해서 빌드 파일 생성

본인은 빌드하다가 자바 버전 문제 때문에 이런 오류를 만나서 고생했다.

사용하는 CLI에 따라 명령어가 다를테지만 윈도우/Git Bash 기준으로는 아래처럼 한다.

1-2. 빌드 된 jar 파일 확인

사용 환경에 따라 맞는 방식으로 빌드를 하고 build/libs 폴더로 가면 

아래처럼 두가지의 jar 파일을 확인할 수 있다.

여기서 두 jar 파일을 간단히 설명하자면 아래와 같다.

  • 위의 용량이 적은 plain이 붙은 jar 파일은 라이브러리 없이 순수한 jar 파일
  • 아래의 용량이 큰 jar 파일은 라이브러리를 포함한 jar 파일

이 중 우리가 사용할건 아래의 jar 파일이다.

2. scp로 로컬 -> EC2로 파일 전송

2-1. 파일 전송 확인을 위해 EC2 접속

로컬과 EC2 두가지 상태를 동시에 비교하기 위해 CLI 창을 아래처럼 두개 이용한다.

2-2. scp를 이용해 파일 전송

scp는 ssh와 입력 파라미터가 비슷한데, 아래와 같은 양식으로 작성한다.

작성 코드 길이를 줄이기 위해 EC2 접속 방법 중 EC2 경로를 연결한 탄력적 IP 주소를 입력하는 방식을 선택했다.

scp -i {키 페어 파일 경로} {전송할 파일 경로} {전송받을 위치 경로}

 

전송받을 경로는 EC2에서 아래처럼 리눅스 명령어 pwd로 확인할 수 있다.


3. EC2에서 전송받은 파일 확인

로컬에서 EC2로 scp를 통해 파일을 전송하고 EC2에서 확인해보면 아래처럼 파일이 전송된걸 확인할 수 있다.

 

참고로 로컬 -> EC2로 파일 전송도 가능하지만, EC2 -> 로컬로도 파일 전송이 가능하다.

아래처럼 작성하면 EC2에서 로컬로 파일 전송을 할 수 있다.

 

 

SSH(Secure Shell Protocol)

SSH란 네트워크 프로토콜 중 하나이다.

컴퓨터와 컴퓨터가 인터넷과 같은 Public Network를 통해 서로 통신을 할 때  보안적으로 안전하게 통신을 하기 위해 사용한다.

대표적인 사용의 예는 다음과 같다.

  • 원격 제어
  • 데이터 전송

SSH를 통해 내 컴퓨터(로컬)에서 EC2 인스턴스로 접속해볼것이다.

그러면 로컬에서 EC2로 접속해서 인스턴스를 이리저리 건드려볼 수 있다.

이후 데이터 전송까지 진행해서 EC2 인스턴스에 스프링 부트 애플리케이션을 띄워볼것이다.


1. SSH로 EC2 인스턴스에 접속

1-1. 인스턴스로 이동해서 연결 버튼 클릭

1-2. 인스턴스 연결 방법 확인

AWS에서 EC2 인스턴스에 연결하는 방법을 너무 친절히 잘 알려줘서 적혀있는걸 따라만 해도 된다.

아래부터는 순전히 여기 적혀있는걸 따라하는 과정이다.

1-3. CLI(Git Bash)로 키 페어 위치로 이동

위 사진은 이전 EC2 인스턴스를 생성할 때 생성했던 키 페어 사진이다.

이제부터 EC2 인스턴스에 접근할 때 이때 만들었던 키 페어가 필요하다.

기본적으로 download 폴더에 있을 것이다.

본인은 이걸 바탕화면으로 옮겼기 때문에 desktop 경로로 이동했다.

1-4. 키 페어 권한 변경

chomd 커맨드로 키 페어의 권한을 변경해준다.

1-5. EC2 인스턴스 접속

이제 키 페어로 EC2 인스턴스로 이동하려면 아래와 같은 양식으로 입력하면 된다.

유저 이름은 OS마다 조금씩 다른데, 본인은 OS를 ubuntu로 했기 때문에 유저 이름은 ubuntu이다.

ssh -i {키 페어 파일 이름} {유저이름}@{EC2 인스턴스 주소}

 

혹은 아래 처럼 연결해둔 탄력적 IP나 public IP 주소로 접근도 가능하다.

(my-key.pem를 감싸는 " "는 생략 가능)


2. EC2 인스턴스 접속 확인

첫 접속때는 위와 같은 라인이 뜰 수도 있는데, yes를 입력하면 된다.

입력 커서가 가리키는 부분이 빨간 표시 영역처럼 바뀌면 접속에 성공한것.

 

참고로 EC2 인스턴스 접속을 끝내고 싶다면 ctrl + D 를 누르면 된다.

 

참고자료

 

AWS 1편: EC2 생성 후 Spring Boot 띄우기

Overview AWS EC2 인스턴스를 생성하고 Spring Boot 서버를 띄워보는 것까지 진행합니다. 주 목표는 서버를 외부에 제공하는 거라서 따로 배포 시스템을 구축하지 않고 단순히 빌드 파일을 복사해서 수

bcp0109.tistory.com

 

+ Recent posts