지난 시간에 Windows PC에 구성해두신 WSL 환경을 외부에서도 접속할 수 있도록 설정하게 되었습니다. 여러 자료를 참고하며 구성한 과정을 정리해 공유해 드립니다.
1. 공유기 내부 IP 고정
외부에서 특정 PC로 안정적으로 접속하기 위해서는 해당 PC의 내부 IP를 고정해주시는 것이 좋습니다.
2. WSL2 가상 IP → 실제 IP 포워딩 설정
WSL2는 가상 머신 환경이기 때문에 매번 부팅 시 내부 IP가 바뀌게 됩니다. 이를 해결하기 위해 PowerShell 스크립트를 활용하여 자동으로 포워딩 설정을 해줄 수 있습니다.
(처음 이부분을 인지하지 못해서 많은 시간을 허비했습니다)
아래는 예시 스크립트입니다:
스크립트 안에 $ports = @(2222); 이라는 부분이 있는데, 괄호 안에 포워딩하고 싶은 포트를 입력하세요.
(여러 포트를 입력하고 싶을 땐 쉼표로 구분해서 나열하세요)
If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
$arguments = "& '" + $myinvocation.mycommand.definition + "'"
Start-Process powershell -Verb runAs -ArgumentList $arguments
Break
}
$remoteport = bash.exe -c "ifconfig eth0 | grep 'inet '"
$found = $remoteport -match '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}';
if ( $found ) {
$remoteport = $matches[0];
}
else {
Write-Output "The Script Exited, the ip address of WSL 2 cannot be found";
exit;
}
$ports = @(2222);
Invoke-Expression "netsh interface portproxy reset";
for ( $i = 0; $i -lt $ports.length; $i++ ) {
$port = $ports[$i];
Invoke-Expression "netsh interface portproxy add v4tov4 listenport=$port connectport=$port connectaddress=$remoteport";
}
Invoke-Expression "netsh interface portproxy show v4tov4";
위 스크립트는 .ps1
확장자로 저장하신 후, 예를 들어 C:\Script
같은 디렉터리에 보관하시면 됩니다.
(전용 에디터가 없다면 메모장에서 작성하고 저장하세요)
3. 작업 스케줄러를 통한 자동 실행 등록
작업 스케줄러를 활용해 PowerShell 스크립트가 로그인 시 자동 실행되도록 설정합니다.
그전에 윈도우는 ps1 파일의 실행을 기본적으로 차단하고 있습니다. 파일을 실행할 수 있도록 정책을 바꿔주도록 합시다.
PowerShell 프로그램을 관리자 권한으로 실행: Win + R
→ powershell 입력 또는 ‘powershell’ 검색
### 스크립트 실행 정책 변경 ###
1. 관리자 권한으로 PowerShell 실행
2. Set-ExecutionPolicy RemoteSigned
3. Y 입력
# 위 방법이 안되면 아래 명령어 실행
2-1. Set-ExecutionPolicy AllSigned
3-1. Y 입력

작업 스케줄러 실행 방법: Win + R
→ taskschd.msc
입력 또는 ‘작업 스케줄러’ 검색

우측 작업만들기 클릭:
설정 방법 요약:
- 일반 탭: 가장 높은 수준의 권한으로 실행 체크
- 트리거 탭: “로그온할 때”로 설정, 지연 시간 30초~1분 설정
- 동작 탭:
- 프로그램:
powershell.exe
- 인수:
-ExecutionPolicy Bypass -File "C:\
Script
\스크립트.ps1"
- 프로그램:
이제 PC가 부팅되고 로그인하면 WSL2의 가상 IP가 자동으로 포워딩되며, 외부에서도 안정적으로 접속이 가능해집니다.
4. Window 방화벽에서 포트 열기
윈도우 방화벽에서 SSH에 사용할 포트(기본 22)를 열어주어야 합니다.
- 방화벽 상태확인: 윈도우 검색에서 “방화벽” 검색
- 고급설정: 좌측 “고급 설정” 메뉴 확인
- 인바운드 규칙 추가:
- 새규칙
- 포트
- TCP / (설정한 포트)포트
- 연결허용
- 도메인 / 개인 / 공용 (모두체크)

5. 공유기 포트포워딩
공유기에서 SSH의 포트를 WSL이 실행중인 컴퓨터의 IP로 포워딩해 줍니다.
최종 테스트
모든 설정이 끝났다면 외부 디바이스에서 아래 명령어를 사용해 접속 테스트를 해보실 수 있습니다.
ssh 사용자명@공인IP주소 -p 포트번호
정상적으로 접속된다면 설정이 잘 마무리된 것입니다.
외부에서도 집에 있는 PC의 WSL2 환경에 안전하게 접속하고자 하시는 분들께 이 방법이 도움이 되기를 바랍니다. 복잡해 보일 수 있지만, 한 번만 잘 설정해두면 편리하게 활용하실 수 있습니다.