블로그 목록으로
VSCode 원격 개발 환경 구축하기 - WSL2 SSH 연결
나는 노트북 들고 다니는 걸 좋아하지 않는다.
기기마다 환경을 분리하는 것 자체도 싫다.
처음에는 크롬 원격 데스크톱을 사용했었다.
하지만 화질이 너무 구리게 전달되고
가끔 버벅일 때도 있어서 불편함을 느꼈다.
그래서 외부에서도 집 컴퓨터의 개발 환경에 직접 접속할 수 있도록
VSCode Remote SSH를 설정했다.
이렇게 하면 좋은 점이 몇 가지 있다.
- 집 컴퓨터의 좋은 사양 리소스를 그대로 활용할 수 있다.
- 피시방에서도, 카페에서도, 어디서든 개발할 수 있다.
- 노트북 없이 가벼운 외출이 가능하다.
🔧 내가 사용한 환경
이 글은 다음 환경을 기준으로 작성되었다.
- 공유기: iptime (DDNS 서비스 사용)
- A컴퓨터 (외부): Windows
- B컴퓨터 (집): Windows + WSL2 Ubuntu
결론적으로
A컴퓨터 → 공유기 → B컴퓨터 Windows → WSL2 Ubuntu
이런 구조로 원격 접속한다.
🖥️ 원격 당할 B컴퓨터의 WSL2 우분투 설정
집에 있는 B컴퓨터의 WSL2 환경을 SSH 서버로 만들어야 한다.
1단계: 패키지 업데이트 (선택사항)
WSL을 처음 설치했다면 패키지를 업데이트하는 게 좋다.
sudo apt update
2단계: OpenSSH 서버 설치
WSL은 기본적으로 SSH 서버가 설치되어 있지 않다.
외부에서 접속하려면 SSH 서버를 설치해야 한다.
sudo apt install openssh-server -y
3단계: SSH 서비스 시작
설치가 끝나면 SSH 서비스를 시작한다.
sudo service ssh start
4단계: SSH 가동 확인
제대로 실행되고 있는지 확인한다.
sudo service ssh status
running
이라고 나오면 성공이다.
(선택사항) 부팅 시 자동 실행 설정
매번 수동으로 SSH를 시작하기 귀찮다면
부팅 시 자동으로 실행되도록 설정할 수 있다.
나는 보안상 수동으로 켜는 걸 선호해서 설정하지 않았다.
sudo systemctl enable ssh
SSH 종료 방법
SSH를 끄고 싶을 때는 다음 명령어를 사용한다.
sudo service ssh stop
WSL 내부 IP 확인 (중요!)
여기서부터가 중요하다.
WSL은 Windows 안에서 독립된 네트워크 환경을 가지고 있다.
그래서 WSL은 Windows와 다른 IP 주소를 가진다.
외부에서 접속하려면
Windows → WSL로 연결을 전달해야 하는데
이때 WSL의 내부 IP 주소가 필요하다.
다음 명령어로 WSL의 IP를 확인한다.
ip addr show
결과 예시:
eth0: ...
inet 172.XX.XXX.XXX/20
172.
로 시작하는 IP 주소를 메모해둔다.
이 IP는 나중에 포트포워딩 설정에서 사용한다.
🖥️ 원격 당할 B컴퓨터 윈도우 PowerShell 설정
이제 Windows에서 설정할 차례다.
WSL은 Windows 안에서 독립된 네트워크 환경이다.
그래서 외부 → Windows → WSL로 연결을 전달해야 한다.
이 과정을 순서대로 설명하겠다.
1단계: Windows에서 WSL로 포트포워딩
관리자 권한으로 PowerShell을 실행한다.
아까 메모해둔 WSL 내부 IP를 사용해서
Windows 포트를 WSL로 연결한다.
netsh interface portproxy add v4tov4 listenport=3022 listenaddress=0.0.0.0 connectport=22 connectaddress=172.XX.XXX.XXX
여기서 172.XX.XXX.XXX
는 아까 확인한 WSL 내부 IP로 바꿔야 한다.
포트 번호는 내가 임의로 설정한 값이므로 원하는 것을 해주면 된다.
2단계: Windows 방화벽 설정
Windows 방화벽에서 3022 포트를 열어줘야 한다.
제어판 → Windows Defender 방화벽 → 고급 설정 → 인바운드 규칙
여기서 새 규칙을 추가한다:
- 규칙 종류: 포트
- 프로토콜: TCP
- 특정 로컬 포트: 3022
- 작업: 연결 허용
- 프로필: 모두 체크
- 이름: SSH WSL 3022 (원하는 이름)
3단계: 공유기 포트포워딩 설정
공유기 관리 페이지에 접속한다.
포트포워딩 설정에서 다음과 같이 추가한다:
- 외부 포트: 3022
- 내부 포트: 3022
- 내부 IP: B컴퓨터의 로컬 IP (192.168.x.x)
- 프로토콜: TCP
4단계: DDNS 설정 (iptime 공유기)
외부에서 접속하려면 집 공인 IP를 알아야 하는데
공인 IP는 수시로 변경된다.
iptime 공유기는 DDNS 서비스를 제공한다.
이걸 사용하면 도메인.iptime.org
형식으로 접속할 수 있다.
공유기 관리 페이지에서
관리도구 → 고급 설정 → 특수기능 → DDNS 설정
여기서 원하는 도메인 이름을 등록한다.
예: example.iptime.org
이제 집 IP가 바뀌어도 이 도메인으로 접속하면 된다.
🖥️ 원격 접속할 A컴퓨터 VSCode 설정
드디어 외부에서 접속할 차례다.
1단계: Remote-SSH 확장 프로그램 설치
VSCode를 열고
좌측 사이드바에서 확장 프로그램(Extensions) 아이콘을 클릭한다.
검색창에 Remote-SSH를 입력하고 설치한다.
https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh
2단계: SSH 설정 파일 편집
Ctrl+Shift+P
를 눌러 명령 팔레트를 연다.
Remote-SSH: Open SSH Configuration File을 선택한다.
그리고 다음 내용을 추가한다:
Host example-wsl-ssh
HostName example.iptime.org
User example
Port 3022
각 항목의 의미는:
Host
: VSCode에서 보이는 연결 이름 (원하는 이름으로 설정)HostName
: iptime DDNS 도메인 (또는 공인 IP)User
: WSL 사용자 계정 이름Port
: 아까 설정한 포트 번호 (3022)
3단계: 원격 접속
Ctrl+Shift+P
→ Remote-SSH: Connect to Host를 선택한다.
방금 설정한 example-wsl-ssh
를 선택한다.
처음 접속하면 비밀번호를 입력하라고 한다.
WSL 사용자 계정의 비밀번호를 입력하면 된다.
연결이 완료되면 VSCode 좌측 하단에
SSH: example-wsl-ssh라고 표시된다.
이제 집 컴퓨터의 WSL 환경에서 개발할 수 있다!
🔧 트러블슈팅
호스트 키가 변경되었다는 오류
같은 도메인과 포트로 여러 번 접속을 시도했을 때
호스트 키가 변경되었다는 오류가 발생할 수 있다.
이럴 때는 A컴퓨터에 저장된 호스트 정보를 삭제하면 된다.
ssh-keygen -R "[example.iptime.org]:3022"
이제 외부 어디서든 집 컴퓨터의 개발 환경에 접속할 수 있다.
(보너스) Windows to Windows 원격 개발
위에서는 WSL로 접속하는 방법을 설명했지만
Windows에서 Windows로 직접 접속하는 것도 가능하다.
B컴퓨터 Windows에 OpenSSH 서버 설치
관리자 권한으로 PowerShell을 실행한다.
# OpenSSH 서버 설치
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
# 설치 확인
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
# SSH 서버 시작
Start-Service sshd
# SSH 가동 중인지 확인
Get-Service sshd
SSH 자동 시작 설정 (선택사항)
Set-Service sshd -StartupType Automatic
방화벽 확인
SSH 포트가 방화벽에서 열려있는지 확인한다.
Get-NetFirewallRule -Name OpenSSH-Server-In-TCP
Enabled: True
면 활성화된 것이다.
SSH 종료 방법
Stop-Service sshd
공유기 포트포워딩
이 경우는 Windows 기본 SSH 포트인 22번을 사용한다.
공유기 설정에서:
- 외부 포트: 22 (또는 원하는 포트)
- 내부 포트: 22
- 내부 IP: B컴퓨터의 로컬 IP
A컴퓨터 VSCode 설정
SSH 설정 파일에 다음을 추가한다:
Host example-windows
HostName example.iptime.org
User [Windows 사용자 이름]
Port 22
이렇게 하면 Windows 환경에 직접 접속할 수 있다.
채팅 문의