네이버클라우드아카데미 Literacy 1기

[NCloud 1기] 클라우드 서버에 Spring Boot 백엔드 서버 올리기 (with PuTTY & WinSCP & SSL VPN)

hwangsoojin 2025. 11. 17. 15:25

이번 글은 네이버클라우드 플랫폼(NCP)의 비공인 IP만 가진 WAS 서버에 Spring Boot 백엔드를 올리고 실행한 과정을 기록한 것이다.

WEB 서버처럼 공인 IP가 있는 서버라면 브라우저에서 바로 접속해서 확인할 수 있지만,
이번에는 WAS 서버가 비공인 IP(10.0.0.6)만 가지고 있다는 점이 핵심이다.

그래서 다음 순서로 작업했다.

  1. 로컬에서 Spring Boot 애플리케이션 빌드
  2. NCP에서 WAS 서버와 SSL VPN 생성
  3. SSL VPN으로 VPC 내부로 진입
  4. WinSCP로 WAS(10.0.0.6)에 접속해 JAR 업로드
  5. PuTTY로 같은 비공인 IP에 SSH 접속
  6. WAS에 Java 17 설치 후 JAR 백그라운드 실행
  7.  curl  명령으로  /hello  API 응답 확인

1. 로컬에서 Spring Boot 프로젝트 빌드

1-1. 예제 코드

 DemoApplication.java 

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}
 

 

 HelloController.java 

package com.example.demo;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String hello() {
        return "Hello from NCP server!";
    }
}
 

1-2. Gradle 빌드

프로젝트 루트에서 다음 명령을 실행했다.

gradlew clean build
 

 

빌드가 끝나면  build/libs  폴더 아래에 두 개의 JAR가 생긴다.

  •  demo-0.0.1-SNAPSHOT.jar 실행용 (스프링부트 포함)
  •  demo-0.0.1-SNAPSHOT-plain.jar  ← 의존성 없는 순수 코드만 들어있는 JAR

우리가 서버에 올려 실행할 파일은  demo-0.0.1-SNAPSHOT.jar  이다.


2. NCP에서 WAS 서버와 SSL VPN 준비

2-1. WAS 서버 상태 확인

NCP 콘솔에서 VPC 서버 목록을 보면 다음과 같은 WAS 서버가 있다.

  • 서버 이름:  hsj-was-01 
  • 비공인 IP:  10.0.0.6 
  • 공인 IP: 없음
  • OS: Rocky Linux 9.6

이 서버는 사설망 안에만 존재하므로, 외부 PC에서 바로 SSH/HTTP로 접근할 수 없다.
그래서 SSL VPN을 통해 먼저 VPC 내부로 들어가야 한다.

 

2-2. SSL VPN 생성

NCP 콘솔에서 VPC > SSL VPN 메뉴로 이동해 SSL VPN을 하나 생성했다.

  • 접근할 VPC:  hsj-vpc (10.0.0.0/16) 
  • SSL VPN 이름:  hsj-sslvpn 
  • IP Pool: 자동 할당 (예:  172.16.0.0/23 )

생성 후 상세정보에서 접속 URL을 확인할 수 있다.

예시:

  • 접속 URL:  https://sslvpn-kr-vpc-01.ncloud.com 
  • IP Pool:  172.16.0.0/23 

 

2-3. BIG-IP Edge Client로 SSL VPN 접속

로컬 PC에서 BIG-IP Edge Client를 실행한 뒤, NCP 콘솔에서 확인한 접속 URL을 입력하고 다음을 눌렀다.

 

이후 브라우저 형태의 로그인 창이 뜨면, NCP에서 설정한 SSL VPN 계정으로 로그인한다.

 

로그인이 성공하면 내 PC에 172.16.x.x 대역의 IP가 부여되고,
이제부터는 VPC 내부(10.0.0.0/16)에 있는 서버들과 직접 통신할 수 있다.


3. WinSCP로 WAS(10.0.0.6)에 접속해 JAR 업로드

SSL VPN 연결이 된 상태에서 WinSCP를 실행한다.

  • File protocol:  SFTP 
  • Host name:  10.0.0.6  (WAS 비공인 IP)
  • Port number:  22 
  • User name:  root 
  • Password: 서버 생성 시 지정한 root 비밀번호

접속에 성공하면 왼쪽은 로컬 PC, 오른쪽은 WAS 서버 파일 시스템이 보인다.

처음에는 오른쪽이  /root  디렉터리로 열려 있다.

 

왼쪽에서 로컬 Spring Boot 프로젝트의  build/libs  폴더로 이동해
 demo-0.0.1-SNAPSHOT.jar  파일을 선택하고, 오른쪽  /project  디렉터리로 드래그앤드롭하여 업로드했다.
(없다면  /project  폴더를 새로 만들어도 된다. 폴더 이름은 자유.)

 

이 시점에서 서버의  /project  안에는 다음과 같이 파일이 하나 존재한다.

  •  /project/demo-0.0.1-SNAPSHOT.jar 

4. PuTTY로 WAS(10.0.0.6)에 SSH 접속

이제 같은 비공인 IP를 사용해 PuTTY로 SSH 접속을 한다.

  • Host Name:  10.0.0.6 
  • Port:  22 
  • Connection type:  SSH 

로그인을 시도하면  login as : 프롬프트가 뜨고,  root  계정과 비밀번호를 입력해 접속한다.

 

4-1. 업로드된 JAR 파일 확인

PuTTY에서 다음 명령으로  /project  폴더로 이동 후 내용을 확인했다.

cd /project
ls
 

 

여기까지가 WinSCP 업로드 → PuTTY에서 확인까지의 흐름이다.


5. WAS에 Java 17 설치

처음  java -version  을 확인했을 때 WAS에는 Java 8(1.8.0_xxx)만 설치되어 있었다.
로컬에서 빌드한 JAR는 Java 17 기준이므로, WAS에도 Java 17을 설치해 주어야 한다.

 

설치 명령:

yum install -y java-17-openjdk
 

 

이제 설치 후 "Complete!"  형태로 출력되면 준비 완료다.


6. Spring Boot JAR 백그라운드 실행

6-1. nohup으로 실행

서버에서 애플리케이션을 돌릴 때는 터미널을 점유하지 않도록
 nohup  과  를 이용해 백그라운드로 실행하는 것이 일반적이다.

nohup java -jar demo-0.0.1-SNAPSHOT.jar > app.log 2>&1 &
  •  nohup  : 터미널을 끊어도 프로세스가 계속 돌도록
  •  > app.log 2>&1  : 표준 출력과 에러를 app.log 파일로 리다이렉트
  •  &  : 백그라운드 실행

명령 실행 후  [1] 43399  와 같이 PID가 출력된다.


7.  curl 로 백엔드 서버 동작 확인

WAS는 비공인 IP만 가지고 있으므로,
내 노트북 브라우저에서  http://10.0.0.6:8080/hello  로 접속할 수 없다.
대신 서버 내부에서 자기 자신에게 HTTP 요청을 보내 확인한다.

curl http://10.0.0.6:8080/hello
 

또는

curl http://localhost:8080/hello
 

정상적으로 애플리케이션이 동작하고 있다면 응답으로 다음 문자열이 출력된다.

Hello from NCP server!

 

 

이 한 줄이, 실제로는 내부에서 다음 흐름이 모두 잘 돌아가고 있다는 증거다.

  • Java 17 설치 및 스프링부트 JAR 실행 성공
  • 내 애플리케이션의  /hello  컨트롤러가 정상 동작
  • 8080 포트에서 HTTP 서버(Tomcat)가 잘 떠 있음

8. 정리: 비공인 IP WAS에 백엔드 올리기 흐름

이번 실습을 통해 다음 개념들을 몸으로 체험했다.

  1. 비공인 IP 서버(WAS)는 인터넷에서 바로 보이지 않는다.
  2. 대신 SSL VPN을 통해 VPC 내부로 들어간 뒤,
    내부 IP(10.0.0.6)를 이용해 WinSCP와 PuTTY로 접근할 수 있다.
  3. 로컬에서 빌드한 Spring Boot JAR를 WinSCP로  /project  에 업로드하고,
    PuTTY에서 Java 17 설치 →  nohup java -jar  로 백그라운드 실행한다.
  4. 외부 브라우저 대신 서버 내부에서  curl 로  /hello 를 호출해
    백엔드 서버가 제대로 동작하는지 확인한다.

앞으로는 이 WAS를 3-Tier 아키텍처의 중간 레이어로 두고,
WEB 서버(Nginx)에서 이 WAS로 프록시를 붙이면
브라우저에서도  /hello  응답을 확인할 수 있게 된다.