
이 글을 통해 얻어갈 수 있는 것
cp/scp로 계속 복사하지 않고, 데스크톱 환경을 노트북에서 그대로 사용 Tailscale
│ │
▼ ▼
┌───────────┐ ┌──────────────┐
│ laptop │ ─────▶ │ desktop │
└───────────┘ │ Windows │
│ │
│ OpenSSH │
│ Tailscale │
│ │ │
│ ▼ │
│ WSL2 │
│ │ │
│ ▼ │
│ Kubernetes │
│ │ │
│ ▼ │
│ Nginx │
└──────────────┘
[laptop] ── Tailscale ──▶ [desktop Windows]
│ VS Code │ OpenSSH / Remote-SSH
▼
WSL2 Linux
├── Docker
├── kind / kubectl
└── Kubernetes → Nginx
Windows
WSL2(Ubuntu)
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
Tailscale IP 확인
<tailscale ip> -4
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Start-Service sshd
Set-Service -Name sshd -StartupType Automatic
Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue
Get-NetTCPConnection -LocalPort 22 -State Listen
ssh <user>@<tailscale ip>
sshuser 계정 별도 생성sshuser로 접속 후 wsl 실행 시 기존 user 계정의 Ubuntu가 안 보임chmod로 권한 문제인 줄 알고 삽질했으나 실패 (계정/WSL 등록 문제였음)sshuser 삭제, 기존 환경 있는 user 계정으로 SSH 통일데스크톱: user (WSL Ubuntu, Docker Desktop, Kubernetes)
노트북: SSH → user@<tailscale ip>
wsl 명령은 실행 위치에 따라 결과가 다름wsl → 노트북 WSLwsl → 데스크톱 WSL데스크톱: \\wsl$\Ubuntu\home\user\
노트북: C:\Users\user\/mnt/c = 현재 실행 중인 WSL이 속한 Windows의 C 드라이브~ = /home/userWSL2 위에 로컬 테스트용 Kubernetes 클러스터가 떠 있고, Nginx Pod가 배포된 상태를 전제로 함.
kubectl port-forwardkubectl port-forward pod/nginx 8080:80
127.0.0.1에만 bind--address를 이용한 외부 접근kubectl port-forward --address 0.0.0.0 pod/nginx 8080:80
# 특정 인터페이스만 열고 싶으면
kubectl port-forward --address <tailscale ip> pod/nginx 8080:80
0.0.0.0: 모든 IPv4 인터페이스에서 listenport-forward를 노트북에서 접근하려니 WSL2 자체 네트워크 인터페이스가 필요했음--address 바인딩 → 노트북 브라우저에서 Nginx 확인 성공노트북 → Tailscale → WSL2(<WSL2 tailscale ip>:8080) → port-forward → Nginx Pod:80
netsh portproxywsl hostname -I
netsh interface portproxy add v4tov4 ^
listenport=8080 listenaddress=0.0.0.0 ^
connectport=8080 connectaddress=<WSL-IP>
# %USERPROFILE%\.wslconfig
[wsl2]
networkingMode=mirrored
port-forward bind는 여전히 따로 지정해야 함wsl --shutdown으로 재시작port-forward는 개발·디버깅용 임시 접근일 뿐| 방식 | 용도 |
|---|---|
| ClusterIP | 클러스터 내부 접근 |
| NodePort | 노드 포트로 테스트 노출 |
| LoadBalancer | 클라우드 외부 진입점 |
| Ingress/Gateway | 경로별 라우팅 |
Connecting with SSH timed out 뜨면:
노트북 CMD에서 직접 접속 시도
ssh <user>@<tailscale ip>
정상 작동 확인되면
VS Code Remote-SSH 쪽 확인
안되면
Tailscale, sshd, 방화벽, 22번 포트 순으로 확인
Get-Service sshd
Get-NetTCPConnection -LocalPort 22 -State Listen
<tailscale ip> -4
ssh -v <user>@<tailscale ip>전체 오류 모음
| 오류 | 원인 | 해결 |
|---|---|---|
SSH 후 wsl에 배포판 없음 | 별도 계정에 WSL 미등록 | 기존 WSL 있는 계정으로 SSH 통일 |
/mnt/c/...에서 노트북 파일 검색 | SSH 후 /mnt/c는 데스크톱 C: | 로컬/원격 경로 구분 |
| Nginx localhost는 되는데 노트북에서 안 열림 | 127.0.0.1 bind, Windows↔WSL 경로 없음 | --address 0.0.0.0 또는 WSL Tailscale IP |
서로 다른 네트워크의 개발 환경 연결
Tailscale + SSH + Remote-SSH 구성
Kubernetes 서비스를 외부에서 접근
port-forward 기본 bind는 127.0.0.1, 외부 접근하려면 --address 지정 필요port-forward, 실제 노출은 Service + Ingress/LB 구조