[VSCode] 원격 vscode 수동설치 하기

서론: 원격 IDE 100% 사용하기

IDE로서 Visual Studio Code(이하 vscode)의 가장 큰 장점 중 하나는 Remote-SSH 플러그인을 통해 제공되는 원격 IDE 기능이다. 이 플러그인을 사용하면 vscode의 모든 기능을 (심지어 모든 플러그인 까지도) 원격지를 기반으로 사용 가능하다.

‘원격지 기반 사용’이란 vscode에서 접근하는 모든 폴더, 파일, 그리고 터미널이 실제로는 원격 서버에 저장되고 그곳에서 실행되고 있다는 의미이다. 플러그인도 원격 서버에 설치 되어 실행된다. 만약 Docker 플러그인을 설치했다면, 원격 서버에서 실행되고 있는 Docker의 리소스가 보이게 된다.

원격 서버에 설치한 Docker 플러그인을 이용하면, 원격지에서 실행중인 컨테이너를 기반으로 vscode를 사용할 수 있다. 그러니까 아래 도식과 같이 두단계 접속을 거쳐도 원격 IDE가 작동하는 것이다.

vscode 플러그인을 기준으로 작성된 도식. 원격 서버의 도커에 vscode로 접근할 수 있다.

물론, Docker 컨테이너 뿐만 아니라 아래 도식과 같이 다른 컴퓨터에도 접속할 수 있다.

Remote-SSH 플러그인으로 다중 ssh 연결 및 ssh 터널링을 자동화 할 수 있다.

이 방식은 원격지의 로컬 네트워크 상 외부 접속이 힘든 서버에 접근할 때 특히 유용하다.

이렇게 편리한 vscode 원격 IDE가 접근이 안되는 경우가 있다. 보통은 Remote-SSH로 접근하면 vscode 서버가 자동으로 설치되는데, 이 자동설치가 실패할 때 문제가 생긴다. 다음과 같은 경우에 문제가 생길 수 있다.

  1. 도커 컨테이너와 같이 특수한 VM 환경
  2. 인바운드는 허용되지만 아웃바운드는 금지된 네트워크 환경
  3. 원격 ssh 서버에서 tcp 터널링이 금지된 환경
  4. 요구사항을 만족하지 못하는 환경

본론: vscode 서버 수동설치

위 1번, 2번과 같은 상황에서는 vscode 서버를 수동으로 설치하면 문제가 해결될 수 있다.

1. 문제 파악하기

먼저 문제가 되는 상황이 vscode 서버가 설치되지 않아서 생기는 것인지 확인해야 한다.

> ls -al ~/.vscode-server/bin
total 0
drwx------ 1 matrain users  80 Dec 21 15:40 .
drwx------ 1 matrain users 502 Dec 21 15:49 ..
drwx------ 1 matrain users 262 Dec 21 15:49 0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2

위와 같이 bin 폴더 안에 해시 값에 적힌 폴더가 들어 있다면 폴더 내의 내용을 확인한다.

> ls -al ~/.vscode-server/bin/0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2/
total 88751
drwx------ 1 matrain users      262 Dec 21 15:49 .
drwx------ 1 matrain users       80 Dec 21 15:40 ..
drwx------ 1 matrain users       56 Dec 13 18:47 bin
drwx------ 1 matrain users      982 Dec 13 18:47 extensions
-rw------- 1 matrain users    13380 Dec 13 18:47 LICENSE
-rwx------ 1 matrain users 90804416 Dec 13 18:47 node
drwx------ 1 matrain users     1646 Dec 13 18:47 node_modules
drwx------ 1 matrain users      216 Dec 13 18:47 out
-rw------- 1 matrain users       62 Dec 13 18:46 package.json
-rw------- 1 matrain users    49765 Dec 13 18:47 product.json

폴더 내의 파일이 위와 같이 정상적으로 들어 있다면, vscode 서버 설치가 잘된 것이다. 만약, 위와 같이 파일이 들어있지 않거나, bin 폴더 내부가 비어 있거나, bin 폴더 자체가 없다면 이 글을 보고 해결할 수 있다.

2. 최신 vscode 서버 커밋 ID 알아내기

최신 vscode 서버를 직접 다운로드 하기 위해서는 github 커밋 ID를 알아야 한다. vscode 서버의 소스코드는 github으로 관리되는데, vscode 개발자들이 배포를 커밋 ID로 할 수 있게 만들어 놨다.

1. vscode의 Github 레포지토리에 들어간다.

제일 위에 있는 릴리즈가 최신 버전이다. 릴리즈의 커밋 ID는 빨간 네모 박스 안에 가지 모양 아이콘 옆에 있다. 지금 보이는 7자리 문자는 앞부분만 잘려 있는 것이다.

2. 우클릭 후 주소를 복사한다.

https://github.com/microsoft/vscode/commit/0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2

우클릭 후 주소를 복사하면 맨 뒤 부분이 커밋 ID이다.

3. 서버 파일 다운받기
# For x64
wget https://update.code.visualstudio.com/commit:0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2/server-linux-x64/stable
# For arm64
wget https://update.code.visualstudio.com/commit:0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2/server-linux-arm64/stable

서버의 아키텍처에 맞게 주소를 선택해서 서버 파일을 다운로드 해주면 된다. 커밋 ID는 commit: 다음에 들어간다.

4. 서버 파일 원격 서버에 설치하기
> ls -al ~/.vscode-server/bin/0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2/
total 88751
drwx------ 1 matrain users      262 Dec 21 15:49 .
drwx------ 1 matrain users       80 Dec 21 15:40 ..
drwx------ 1 matrain users       56 Dec 13 18:47 bin
drwx------ 1 matrain users      982 Dec 13 18:47 extensions
-rw------- 1 matrain users    13380 Dec 13 18:47 LICENSE
-rwx------ 1 matrain users 90804416 Dec 13 18:47 node
drwx------ 1 matrain users     1646 Dec 13 18:47 node_modules
drwx------ 1 matrain users      216 Dec 13 18:47 out
-rw------- 1 matrain users       62 Dec 13 18:46 package.json
-rw------- 1 matrain users    49765 Dec 13 18:47 product.json

최종적으로 위와 같이 설치 되어야 한다.

먼저, 커밋 ID를 이름으로 갖는 폴더를 bin 폴더 안에 만들어야 한다.

mkdir -p ~/.vscode-server/bin/0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2

다음으로, 만든 폴더 안에 압축된 파일을 풀어주면 된다.

cd ~/.vscode-server/bin/0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2
tar -xvzf ~/vscode-server-linux-x64.tar.gz --strip-components 1
5. vscode로 접속하기

이제 vscode로 접속하면 문제가 해결되었을 것이다.

결론

이 튜토리얼은 vscode 서버가 작동하지 않는 것 처럼 보일 때, 문제점 해결을 기대해 볼 수 있는 방법을 제공한다. 많은 사람들이 이 글을 보고 도움이 되었으면 한다.

댓글 남기기

이메일 주소는 게시되지 않습니다. 필수 필드는 *로 표시됩니다.