원격 개발 FAQ
이 문서는 Visual Studio Code 원격 개발 확장에 대한 자주 묻는 질문을 다룹니다. 각 기능을 설정하고 작업하는 방법에 대한 자세한 내용은 SSH, 컨테이너, WSL 문서를 참조하세요. 또는 원격 환경에서 빠르게 작업을 시작하는 데 도움이 되는 소개 튜토리얼을 시도해 보세요.
GitHub Codespaces에 대한 질문은 GitHub Codespaces 문서를 참조하세요.
일반
Visual Studio Code 원격 개발이란 무엇인가요?
Visual Studio Code 원격 개발 확장 팩을 사용하면 컨테이너, 원격 머신(SSH를 통해) 또는 Windows Subsystem for Linux에서 모든 폴더를 열고 VS Code의 전체 기능을 활용할 수 있습니다. 이는 코드가 위치하거나 호스팅되는 곳에 관계없이 VS Code가 로컬 품질의 개발 경험을 제공할 수 있음을 의미합니다. 여기에는 전체 IntelliSense(완성), 디버깅 등이 포함됩니다.
VS Code 원격 개발이 로컬 편집에 비해 제공하는 이점은 무엇인가요?
원격 개발의 몇 가지 이점은 다음과 같습니다:
- 로컬에서 실행 중인 OS와 다른 OS에서 편집, 빌드 또는 디버깅할 수 있습니다.
- 대상 배포 환경과 일치하는 환경에서 개발할 수 있습니다.
- 로컬 머신보다 더 크거나 전문화된 하드웨어를 사용하여 개발할 수 있습니다.
- 클라우드나 고객 사이트와 같은 다른 위치에 저장된 코드를 편집할 수 있습니다.
- 개발자 환경을 분리하여 충돌을 피하고 보안을 개선하며 온보딩 속도를 높일 수 있습니다.
네트워크 공유를 사용하거나 파일을 동기화하는 것과 비교할 때, VS Code 원격 개발은 개발 환경과 도구에 대한 더 나은 제어와 함께 성능이 크게 향상됩니다.
원격 개발 확장과 GitHub Codespaces는 어떻게 관련이 있나요?
GitHub Codespaces는 VS Code와 새로운 브라우저 기반 편집기에서 접근할 수 있는 관리형 클라우드 호스팅 개발 환경을 제공하는 서비스입니다. 이 서비스는 또한 VS Code와 브라우저 기반 편집기가 SSH 서버나 직접 네트워크 경로 없이 자체 호스팅 환경(데스크탑 또는 서버)에 접근할 수 있도록 합니다. 자세한 내용은 GitHub Codespaces 문서를 참조하세요.
원격 개발 및 Codespaces 확장은 기술과 기능을 공유하지만, 원격 개발 확장은 별도로 출시되며 GitHub Codespaces와 독립적으로 작동할 수 있습니다.
원격 개발 확장은 어떻게 작동하나요?
Visual Studio Code 원격 개발은 로컬 VS Code 설치가 다른 머신(가상 또는 물리적)의 소스 코드 및 런타임 환경과 투명하게 상호작용할 수 있도록 하며, 특정 명령의 실행을 "원격 서버"로 이동합니다. VS Code 서버는 원격 엔드포인트에 연결할 때 VS Code에 의해 신속하게 설치되며, 원격 작업 공간, 머신 및 파일 시스템과 직접 상호작용하는 확장을 호스팅할 수 있습니다.
추가적인 확장에 대한 세부정보는 원격 개발 지원을 참조하세요.
원격 개발 확장은 원격 머신, VM 또는 컨테이너에 대한 접근을 어떻게 보안하나요?
Visual Studio Code 원격 개발은 보안 셸과 같은 기존의 잘 알려진 전송 방법을 사용하여 인증하고 트래픽을 보안합니다. 이러한 잘 알려진 보안 전송 방법이 사용 하는 포트 외에는 공개적으로 열 필요가 없습니다.
주입된 VS Code 서버는 머신에 로그인할 때 사용한 사용자로 실행되며, 이는 VS Code와 그 확장이 허가 없이 부적절한 상승된 접근 권한을 부여받지 않도록 보장합니다. 서버는 VS Code에 의해 시작되고 중지되며, 사용자 또는 전역 로그인 또는 시작 스크립트에 연결되어 있지 않습니다. VS Code는 서버의 생명 주기를 관리하므로 서버가 실행 중인지 여부에 대해 걱정할 필요가 없습니다.
VS Code 서버를 독립적으로 설치하거나 사용할 수 있나요?
아니요. VS Code 서버는 원격 개발 확장의 구성 요소이며 VS Code 클라이언트에 의해 관리됩니다. 엔드포인트에 연결할 때 VS Code에 의해 자동으로 설치 및 업데이트되며, 별도로 설치할 경우 빠르게 구식이 될 수 있습니다. 다른 클라이언트에서 사용하기 위한 것이 아니며 라이센스가 부여되지 않았습니다.
VS Code 서버의 연결 요구 사항은 무엇인가요?
VS Code 서버 설치를 위해서는 로컬 머신이 다음에 대한 아 웃바운드 HTTPS(포트 443) 연결을 가져야 합니다:
update.code.visualstudio.com
*.vo.msecnd.net
(Azure CDN)
기본적으로 Remote - SSH는 원격 호스트에서 다운로드를 시도하며, 연결이 설정되면 VS Code 서버를 로컬에서 다운로드하고 원격으로 전송하는 방식으로 실패합니다. setting(remote.SSH.localServerDownload)
설정을 사용하여 항상 로컬에서 다운로드한 후 전송하도록 변경하거나, 로컬에서 다운로드하지 않도록 설정할 수 있습니다.
Dev Containers 확장은 항상 로컬에서 다운로드하고 컨테이너로 전송합니다.
인터넷 연결 없이 수동으로 확장을 설치할 수 있는 Extensions: Install from VSIX... 명령을 사용할 수 있지만, 확장 패널이나 devcontainer.json
을 사용하여 확장을 설치하는 경우 로컬 머신과 VS Code 서버는 다음에 대한 아웃바운드 HTTPS(포트 443) 접근이 필요합니다:
marketplace.visualstudio.com
vscode.blob.core.windows.net
*.vo.msecnd.net
(Azure CDN)*.gallerycdn.vsassets.io
(Azure CDN)
마지막으로, 일부 확장(C#와 같은)은 download.microsoft.com
또는 download.visualstudio.microsoft.com
에서 추가 종속성을 다운로드합니다. 다른 확장(Visual Studio Live Share와 같은)는 추가적인 연결 요구 사항이 있을 수 있습니다. 문제가 발생하면 확장 문서를 참조하세요.
서버와 VS Code 클라이언트 간의 모든 다른 통신은 확장에 따라 다음 전송 채널을 통해 이루어집니다:
- SSH: 인증된 보안 SSH 터널.
- 컨테이 너: Docker의 구성된 통신 채널(
docker exec
를 통해). - WSL: 임의의 로컬 포트.
VS Code가 접근해야 하는 위치 목록은 네트워크 연결 문서에서 확인할 수 있습니다.
원격 확장을 사용할 때 Docker 확장에서 로컬 컨테이너를 볼 수 없는 이유는 무엇인가요?
기본적으로 Docker 확장은 원격에서 실행됩니다. 이는 일부 경우에 합리적인 기본값이지만, VS Code가 원격 SSH 호스트, 컨테이너 또는 WSL에 연결되어 있을 때 확장이 로컬 컨테이너를 표시하지 않을 수 있습니다.
이 문제를 해결하기 위해 다음 솔루션 중 하나를 사용할 수 있습니다:
-
새 로컬 창을 열고 (파일 > 새 창) 로컬 컨테이너와 작업합니다.
-
Dev Containers 확장을 설치하고 로컬 컨테이너를 볼 필요가 있을 때 원격 탐색기를 사용합니다.
-
WSL 전용: WSL 2용 Docker 기술 미리보기를 사용하거나 WSL 1에서 사용할 Docker Desktop 구성을 설정합니다.
-
Dev Containers 전용: Docker 소켓을 포워딩하고 Docker CLI를 설치합니다(컨테이너 내에서만).
-
extensionKind 속성을 사용하여 확장을
ui
로 강제할 수 있습니다. 그러나 이 경우 일부 명령이 작동하지 않을 수 있습니다.
원격 개발을 사용하기 위해 호스트에 설치해야 하는 Linux 패키지나 라이브러리는 무엇인가요?
원격 개발은 kernel >= 4.18, glibc >=2.28, libstdc++ >= 3.4.25가 필요합니다. 최근 x86_64 glibc 기반 배포판이 가장 좋은 지원을 제공하지만, 정확한 요구 사항은 배포판에 따라 다를 수 있습니다.
musl 기반 Alpine Linux에 대한 지원은 Dev Containers 및 WSL 확장에서 제공되며 ARMv7l (AArch32) / ARMv8l (AArch64)는 Remote - SSH에서 사용할 수 있습니다. 그러나 특정 확장에서 의 네이티브 종속성으로 인해 비 x86_64 glibc 배포판에서 작동하지 않을 수 있습니다. 실험적인 ARMv8l (AArch64)는 VS Code Insiders에서만 사용할 수 있습니다.
추가 세부정보는 Linux와 함께하는 원격 개발을 참조하세요.
오래된 Linux 배포판에서 VS Code 서버를 실행할 수 있나요?
VS Code 버전 1.99(2025년 3월)부터 VS Code에서 배포하는 미리 빌드된 서버는 glibc 2.28 이상을 기반으로 하는 Linux 배포판과만 호환됩니다. 예를 들어 Debian 10, RHEL 8 또는 Ubuntu 20.04가 이에 해당합니다.
VS Code는 여전히 사용자가 VS Code에서 지원하지 않는 OS(즉, glibc >= 2.28 및 libstdc++ >= 3.4.25가 없는 OS)에 Remote - SSH 확장을 통해 연결할 수 있도록 허용합니다. 이 경우 이러한 필수 라이브러리 버전이 포함된 sysroot가 제공되어야 합니다. 이 접근 방식은 귀하와 귀하의 조직이 최신 Linux 배포판으로 마이그레이션할 수 있는 시간을 더 제공합니다.
VS Code 버전 | 기본 요구 사항 | 비고 |
---|---|---|
1.99.x | kernel >= 4.18, glibc >=2.28, libstdc++ >= 3.4.25, binutils >= 2.29 | <없음> |
[!중요] 이 접근 방식은 기술적 인 우회 방법이며 공식적으로 지원되는 사용 시나리오는 아닙니다.
이 우회 방법을 위해 환경을 구성하려면 다음 단계를 따르세요:
-
sysroot 빌드
sysroot를 빌드하기 위해 Crosstool-ng를 사용하는 것을 권장합니다. 시작할 수 있는 몇 가지 예제 구성은 다음과 같습니다:
다음 예제 컨테이너를 사용하여 Crosstool-ng가 설치된 환경을 만들 수도 있습니다:
FROM ubuntu:latest
RUN apt-get update
RUN apt-get install -y gcc g++ gperf bison flex texinfo help2man make libncurses5-dev \
python3-dev autoconf automake libtool libtool-bin gawk wget bzip2 xz-utils unzip \
patch rsync meson ninja-build
# crosstool-ng 설치
RUN wget http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.26.0.tar.bz2
RUN tar -xjf crosstool-ng-1.26.0.tar.bz2
RUN cd crosstool-ng-1.26.0 && ./configure --prefix=/crosstool-ng-1.26.0/out && make && make install
ENV PATH=$PATH:/crosstool-ng-1.26.0/out/binCrosstool-ng와 관련된 구성이 준비되면 다음 명령을 실행하여 sysroot를 생성합니다.
mkdir toolchain-dir
cd toolchain-dir
cp <path-to-config-file> > .config
ct-ng build -
VS Code 서버는 설치 과정에서 patchelf를 사용하여 sysroot에서 필요한 라이브러리를 사용합니다.
[!중요] patchelf
v0.17.x
는 원격 서버에서 세그멘테이션 오류를 유발하는 것으로 알려져 있으며, patchelf>=v0.18.x
를 사용하는 것이 좋습니다.
-
원격 호스트에 patchelf 바이너리와 sysroot를 설치합니다.
-
다음 3개의 환경 변수를 생성합니다:
이제 Remote - SSH 확장을 사용하여 원격에 연결할 수 있습니다. 연결이 성공하면 VS Code는 연결이 지원되지 않는다는 대화 상자와 배너 메시지를 표시합니다.