이전에는 로컬 머신에서 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)와 같은 터널링 도구를 사용해 외부에서 직접 접근 가능한 엔드포인트를 생성하는 방법도 가능하나, 보안 및 네트워크 구성에 따라 추가 설정이 필요하다.