VS Code를 이용한 원격 서버 디렉토리 접근법 - (1)

업데이트:

  • 연구주제 : VS Code를 이용한 원격 서버 디렉토리 접근
  • 연구목적 : 원격 서버 관리
  • 연구일시 : 2020년 1월 06일 09:00~17:00
  • 연구자 : 이재환 ljh951103@naver.com
  • 연구장비 : HP EliteDesk 800 G4 TWR, WSL, Lightsail, VS Code, Docker
  • 관련연구 : AWS, Linux, Unix, Ubuntu, OS, SSH

 

서론

원격 서버를 연결하기위해선 Visual Studio Code(VS Code)를 알아야 할 필요가 있다. 원격 연결은 VS Code의 확장기능인 VS Code Remote Developent를 이용한다. 본 글에서 설명할 원격 접속 방식은 다음과 같다.

 

  • VS Code Remote - SSH를 이용하여 다른 서버에 SSH방식으로 원격접근할 수 있다.
  • VS Code Remote Containers를 이용하여 실행중인 컨테이너에 접글할 수 있다.
  • VS Code Remote WSL를 이용하여 WSL 서버에 접글할 수 있다.

 

여기서 우리는 각각 AWS Lightsail, Docker Container, WSL 서버 환경으로의 원격연결을 예시로 다룬다.

 

 

본론

Visual Studio Code

1. What is VSCode?

VS Code(Visual Studio Code)는 마이크로소프트 윈도우, macOS, 리눅스용으로 개발한 소스 코드 편집기이다.

이처럼 VS Code는 소스 코드 편집기로, 다양한 프로그래밍 언어를 지원하며 각 언어와 함께 사용할 수 있는 편리한 기능들을 제공한다. 또한 대부분 기능은 메뉴를 통해 접근할 수 없고 명령 팔레트와 .json 파일을 통해 사용한다.

VSCode는 거의 모든 주요 프로그래밍 언어를 지원한다.
자바스크립트, 타입스크립트, CSS, HTML는 기본으로 포함되어 있고, 나머지 언어는 VS Code 마켓플레이스로부터 무료로 다운로드하여 확장할 수 있다.

 

2. Visual Studio Code Remote Development

확장기능인 Visual Studio Code Remote Development를 설치하게되면 VS Code Remote 확장 기능들을 대부분 이용할 수 있다. 언제든지 원격 서버에 접속한 다음 코딩을 할 수 있다. 위에서 간단히 얘기했듯이 Code Remote 확장 기능에는 다음과 같은 세 가지 확장 기능이 포함되어 있다.

 

  • Remote - SSH를 이용하여 원격 시스템이나 VM의 폴더를 열어 모든 위치에 연결한다.
  • Remote - Containers 내부에 컨테이너 기반 응용 프로그램을 사용한다.
  • Remote - WSL - 리눅스용 윈도우즈 서브 시스템에서 리눅스 기반 개발을 한다.

 

이제 VS Code 만 간신히 돌아갈 만한 가벼운 노트북만 들고 다니면서도 별도로 구축한 서버에 접속해서 코딩을 할 수 있게되는 것이다.

 

 

SSH

SSHSecure Shell Protocol, 즉 네트워크 프로토콜 중 하나로 컴퓨터와 컴퓨터가 인터넷과 같은 Public Network를 통해 서로 통신을 할 때 보안적으로 안전하게 통신을 하기 위해 사용하는 프로토콜입니다. 대표적인 사용의 예는 다음과 같습니다.

  • 데이터 전송
  • 원격 제어

여기서 우리가 주목해야할 사용의 예는 원격 제어이다. AWS의 인스턴스 서버에 접속하여 해당 머신에 명령을 내린다고할 때, SSH를 통하여 접근해야한다.
그렇다면 FTP나 Telnet과 같은 다른 컴퓨터와 통신을 위해 사용되는 프로토콜도 있는데 SSH를 사용하는가를 생각해볼 수 있다. 그 이유는 물론 “보안”이다. SSH는 보안적으로 훨씬 안전한 채널을 구성한 뒤 정보를 교환하기 때문에 보안적인 면에서 훨씬 뛰어나다.

그럼 SSH는 어떻게, 어떤 방식으로 서로 다른 컴퓨터가 안전하게 통신하게끔 할까?
그 이유는 공개키와 비밀키쌍을 이용하는데에 있다. 항상 통신을 할 때에는 암호화 복호화를 통하여 이루어지므로 하나의 채널이 형성되어 Key를 활용해 데이터를 안전하게 주고받을 수 있는 것이다..

 

Container

컨테이너란 호스트 OS상에 논리적인 구획(컨테이너)을 만들고, 어플리케이션을 작동시키기 위해 필요한 라이브러리나 어플리케이션 등을 하나로 모아, 마치 별도의 서버인 것처럼 사용할 수 있게 만든 것이다.
호스트 OS의 리소스를 논리적으로 분리시키고, 여러 개의 컨테이너가 공유하여 사용한다.. 컨테이너는 오버헤드가 적기 때문에 가볍고 고속으로 작동하는 것이 특징이다.

 

 

컨테이너 기술을 사용하면 OS나 디렉토리, IP 주소 등과 같은 시스템 자원을 마치 각 어플리케이션이 점유하고 있는 것처럼 보이게 할 수 있습니다. 컨테이너는 어플리케이션의 실행에 필요한 모듈을 컨테이너로 모을 수 있기 때문에 여러개의 컨테이너를 조합하여 하나의 어플리케이션을 구축하는 마이크로 서비스형 어플리케이션과 친화성이 높은 것이 특징입니다.

가상머신은 하드웨어 스택을 가상화하지만. 컨테이너는 이와 달리 운영체제 수준에서 가상화를 실시하여 다수의 컨테이너를 OS 커널에서 직접 구동한다. 컨테이너는 훨씬 가볍고 운영체제 커널을 공유하며, 시작이 훨씬 빠르고 운영체제 전체 부팅보다 메모리를 훨씬 적게 차지한다는 이점이 있다.

 

WSL

WSLWindows Subsystem for Linux의 약자로 리눅스용 윈도우 하위 시스템이다. 즉, Windows에서 네이티브 Linux 명령줄 도구를 직접 실행할 수 있는 새로운 Windows 10 기능이다.

개발자들은 윈도우에서 개발을 진행하면서 각종 가상머신과 에뮬레이터를 통해 불필요한 자원을 소모해가며 대체해오던 많은 것들을 실제 리눅스에서 개발하듯 윈도우에서 리눅스를 넘나들수 있게 된 것이다.

해당 기능은 Windows 10에서만 지원하는 기능이고 기존 WSL 이후 WSL2가 발표된 상태이다.

image

 

결론

VS Code와 확장기능인 Remote Development에 대한 개념을 이해할 수 있었다.
나머지 내용은 2부에서 다루겠다.

 

향후과제

  • Remote - SSH
  • Remote - Containers
  • Remote - WSL

세 가지 방법을 이용하여 원격 연결

 

참고자료

https://blog.lael.be/post/7678
https://code.visualstudio.com/docs/remote/ssh

 

Writer: Jae-Hwan Lee

댓글남기기