VSCode를 통해 원격 Windows 11의 WSL2 프로젝트 연결하기

이전에는 로컬 머신에서 VSCode의 Remote-SSH 확장 기능을 사용해 동일 네트워크 내 다른 Windows 11 장치에 설치된 WSL2 환경과 연결하여 개발 작업을 수행한 경험이 있다. 당시에는 Remote Explorer에서 WSL Targets를 선택하면 원격 호스트의 WSL2 배포판이 자동으로 감지되었고, 해당 배포판 내의 프로젝트 디렉터리를 워크스페이스로 열 수 있었다.

그러나 최근 새로운 로컬/원격 머신 조합에서 동일한 절차를 시도했을 때, 마지막 단계인 "워크스페이스 신뢰(Trust Workspace)" 과정에서 문제가 발생했다. "Trust & Continue"를 클릭해도 연결이 끊기고 "Restricted Mode" 상태로 전환되었다. 설정에서 Security › Workspace › Trust: Enabled 옵션을 false로 변경하면 정상 연결은 가능하지만, 명시적으로 프로젝트 경로를 신뢰할 수는 없었다. .vscode-server 폴더 삭제 및 연결 캐시 초기화 등의 조치도 효과가 없었다.

SSH 점프(Jump Host) 방식을 통한 연결 설정

Windows 11에서 OpenSSH 서버 구성

관리자 권한 PowerShell에서 다음 명령어로 OpenSSH 서버 설치 여부 확인:

Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'

설치되지 않은 경우 아래 명령어로 클라이언트 및 서버 설치:

Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

서버 시작 및 자동 실행 설정:

Start-Service sshd
Set-Service -Name sshd -StartupType Automatic

방화벽 규칙이 누락된 경우 수동 추가:

New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

공개 키 인증 설정

로컬 머신에서 키 생성:

ssh-keygen -t ed25519

생성된 공개 키(id_ed25519.pub) 내용을 원격 호스트의 C:\Users\<사용자>\.ssh\authorized_keys 파일에 추가 후 권한 설정:

icacls.exe "C:\Users\<사용자>\.ssh\authorized_keys" /inheritance:r /grant "<사용자>:F" /grant "SYSTEM:F"

C:\ProgramData\ssh\sshd_config 파일 수정:

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
# Match Group administrators 블록 주석 처리

수정 후 서비스 재시작:

Restart-Service sshd

WSL2 내 SSH 서버 설정

WSL2 배포판(예: Ubuntu) 내에서 OpenSSH 서버 설치:

sudo apt update && sudo apt install openssh-server

/etc/ssh/sshd_config 설정:

Port 2222
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
PermitRootLogin no

서비스 재시작:

sudo service ssh restart

WSL2 시작 시 자동 실행을 위해 ~/.start-services.sh 생성:

#!/bin/bash
sudo service ssh start

실행 권한 부여 후 ~/.bashrc 끝에 다음 추가:

if [ -z "$SSH_STARTED" ]; then
    export SSH_STARTED=1
    ~/.start-services.sh
fi

로컬 SSH 설정을 통한 점프 연결

로컬 머신의 ~/.ssh/config 파일에 다음 항목 추가:

Host wsl2-remote
    HostName localhost
    User wsluser
    Port 2222
    ProxyJump winuser@192.168.x.x:22
    StrictHostKeyChecking no
    UserKnownHostsFile /dev/null
    ServerAliveInterval 60
    ServerAliveCountMax 3

이제 VSCode에서 Remote-SSH 확장 기능을 사용해 wsl2-remote 대상에 연결하면 WSL2 내 프로젝트를 직접 워크스페이스로 열 수 있다.

대안: FRP를 이용한 포트 포워딩

WSL2 내에서 frp(fast reverse proxy)와 같은 터널링 도구를 사용해 외부에서 직접 접근 가능한 엔드포인트를 생성하는 방법도 가능하나, 보안 및 네트워크 구성에 따라 추가 설정이 필요하다.

태그: vscode WSL2 Remote-SSH OpenSSH Windows11

9월 25일 13:27에 게시됨