devAlice
← Multi-OS

원격 개발 — SSH·Tailscale·VS Code Remote로 다른 머신에서 일하기

노트북에서 데스크톱·홈서버·클라우드 워크스테이션을 매끄럽게 — Tailscale·SSH·VS Code Remote·tmux 통합 셋업.

"강력한 데스크톱은 집에 두고 노트북은 가볍게" 또는 "GPU 워크스테이션을 원격에서 쓰고 싶다" 같은 시나리오. 핵심 도구는 Tailscale (제로컨피그 VPN) + SSH + VS Code Remote-SSH + tmux. 한 번 셋업하면 카페에서도 집 데스크톱 같은 개발 환경.

TL;DR

  1. Tailscale — NAT/방화벽 우회한 머신 간 사설망. 회사 VPN 없이 양쪽 머신 연결
  2. SSH — 인증된 후 모든 통신
  3. VS Code Remote-SSH — 원격 머신의 파일을 로컬 VS Code로 편집 (마치 로컬처럼)
  4. tmux — 세션 영속화. 연결 끊겨도 작업 그대로
  5. Mosh (선택) — 모바일 네트워크에서도 안정적인 SSH 대안

사전 조건

  • 양쪽 머신에 SSH·계정 + 인터넷
  • (선택) 도메인이나 고정 IP는 불필요 — Tailscale이 해결

1. Tailscale 셋업

Tailscale은 WireGuard 기반 메시 VPN. 각 머신에 클라이언트 설치 + 같은 계정 로그인 → 자동으로 사설 IP (100.x.x.x) 부여. NAT 뚫고 직접 연결.

1.1 설치

Mac:

brew install --cask tailscale

Windows:

winget install --id tailscale.tailscale

Linux (Ubuntu):

curl -fsSL https://tailscale.com/install.sh | sh

1.2 로그인

각 머신에서:

sudo tailscale up      # Mac/Linux
# 또는 GUI 트레이 → Login

브라우저 열림 → Google/GitHub/Microsoft 계정 (Tailscale 가입 — 무료 100 디바이스).

1.3 머신 IP 확인

tailscale ip -4
# 100.x.x.x

또는 admin.tailscale.com 에서 모든 머신 목록.

1.4 머신 이름 (MagicDNS)

admin 콘솔 → DNS → MagicDNS 활성화. 이제 desktop.tail-scale.ts.net 같은 이름으로 직접 SSH 가능:

ssh me@desktop
# (.tail-scale.ts.net 자동 추가)

한 번 켜두면 평생 사설 IP 신경 안 써도 됨. 본 가이드 나머지는 desktop 이라는 이름 가정.

2. SSH 준비

2.1 원격 머신에서 SSH 활성화

Mac (원격):

  • System Settings → General → Sharing → Remote Login ON

Windows (원격):

  • Settings → System → Optional features → OpenSSH Server 설치
  • PowerShell (admin):
    Set-Service -Name sshd -StartupType Automatic
    Start-Service sshd

Linux (원격):

sudo apt install openssh-server
sudo systemctl enable --now ssh

2.2 SSH 키 등록

로컬 머신의 공개 키를 원격 ~/.ssh/authorized_keys 에 추가:

# 로컬
ssh-copy-id me@desktop
# 또는 수동 — 원격에서:
mkdir -p ~/.ssh && chmod 700 ~/.ssh
echo "ssh-ed25519 AAAA..." >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

2.3 접속

ssh me@desktop
# 또는 100.x.x.x 직접

3. VS Code Remote-SSH

Visual Studio Code 안에서 원격 머신의 파일을 로컬 속도로 편집.

3.1 확장 설치

VS Code 확장 마켓:

  • Remote - SSH (ms-vscode-remote.remote-ssh)

또는:

code --install-extension ms-vscode-remote.remote-ssh

3.2 연결

VS Code Command Palette (⌘⇧P / Ctrl+Shift+P) → Remote-SSH: Connect to Hostme@desktop 입력.

처음 연결 시 원격에 VS Code Server 자동 설치 (~50MB, 한 번만). 이후 즉시.

3.3 사용

좌측 하단 SSH: desktop 표시. File → Open Folder → 원격의 ~/work/repo 열기. 확장은 원격에 별도 설치 (예: Python 확장은 원격 머신의 Python 환경 사용).

3.4 권장 확장 (원격 설치)

  • ESLint / Prettier
  • Python / Pylance
  • Docker
  • (로컬엔 Theme·키맵만 두는 게 깔끔)

4. tmux — 세션 영속화

SSH 연결이 끊겨도 작업 보존:

4.1 설치 (원격)

# Mac/Linux 원격
brew install tmux   # Mac
sudo apt install tmux   # Ubuntu

4.2 사용

ssh me@desktop
tmux new -s work       # 세션 시작
# ...일하다가...
# Ctrl+B, D  → detach (세션 살아있음)
 
# 나중에
ssh me@desktop
tmux attach -t work    # 다시 붙임

4.3 핵심 단축키

단축키 (prefix = Ctrl+B)동작
prefix + Ddetach
prefix + C새 window
prefix + N / P다음/이전 window
prefix + %세로 분할
prefix + "가로 분할
prefix + 화살표pane 이동
prefix + Zpane 줌인/아웃

4.4 자동 attach

.zshrc (원격):

if [[ -z "$TMUX" && -n "$SSH_CONNECTION" ]]; then
  tmux attach -t main || tmux new -s main
fi

SSH 접속 시 자동으로 main 세션 시작/재진입.

5. Mosh — 모바일 네트워크에서

이동 중 (5G/와이파이 전환)에 SSH가 자주 끊긴다면 Mosh (Mobile shell). UDP 기반·로컬 에코·끊김 자동 복구.

brew install mosh
# 원격
sudo apt install mosh
mosh me@desktop

자체 SSH 인증 + UDP 60000-61000 포트 사용. Tailscale 통해서는 별도 방화벽 설정 불필요.

6. 시나리오: GPU 워크스테이션 원격

목표: 노트북에서 데스크톱 GPU로 ML 학습.

# 노트북에서
ssh me@gpu-workstation
tmux new -s train
 
# tmux 안에서
cd ~/projects/ml
python train.py --epochs 100
 
# Ctrl+B, D 로 detach
 
# 노트북 닫고 카페로
# 다시 접속
ssh me@gpu-workstation
tmux attach -t train
# 학습 그대로 진행 중

VS Code Remote로 편집 + tmux로 학습 실행. 둘이 같이 동작.

7. 보안

Tailscale ACL (선택)

기본은 같은 계정 모든 머신이 서로 접근. 회사·가족이 섞이면 분리:

  • admin 콘솔 → ACLs → JSON 정책 작성
  • 태그 기반 권한 (tag:dev, tag:home)

SSH 강화

원격 /etc/ssh/sshd_config:

PasswordAuthentication no       # 키만
PermitRootLogin no
AllowUsers me
sudo systemctl restart sshd

1Password SSH agent

비밀번호 매니저 참고. Tailscale + 1Password agent 조합이면 passphrase 없이 biometric만으로 SSH.

검증

  1. 양쪽 머신에서 tailscale status → "online" 표시
  2. ssh me@desktop → 즉시 로그인 (passphrase 또는 biometric 한 번)
  3. VS Code Command Palette → Remote-SSH Connect → 파일 편집 + 저장 → 원격에 실제 반영
  4. tmux new -s test → detach → 다시 tmux attach -t test → 작업 상태 유지
  5. mosh me@desktop → 와이파이 끊고 다른 네트워크로 전환 → 세션 자동 복구

트러블슈팅

Tailscale 연결 안 됨

  • 양쪽 머신 모두 tailscale up 로그인 완료
  • admin 콘솔에서 두 머신 모두 "Connected" 상태
  • 방화벽 — Tailscale은 41641/UDP 사용. 회사망에서 막힐 수 있음 (DERP relay로 fallback)

ssh: connect to host 100.x.x.x: Connection refused

  • 원격 머신의 SSH 서비스가 안 켜짐 (2.1 다시 확인)
  • Windows: Get-Service sshd 가 Running 인지

VS Code Remote 가 느림

  • 첫 연결 시 Server 설치 — 한 번만 느림
  • 인터넷 경유 (Tailscale Direct 연결 안 됨) — tailscale ping desktop 으로 direct vs DERP 확인

tmux 안에서 컬러 깨짐

.tmux.conf:

set -g default-terminal "screen-256color"
set -ga terminal-overrides ",xterm-256color:Tc"

Mosh 연결 안 됨

UDP 60000-61000 차단 — 회사망에서 흔함. 이 경우 SSH로 fallback. Mosh는 UDP 필수.

SSH agent forwarding (조심)

원격 머신에서 또 다른 원격으로 SSH 가야 할 때 ssh -A. 다만 원격 머신이 신뢰 가능한 경우만 — 악의적 root가 있다면 키 노출.

참고

변경 이력

  • 2026-05-12: 첫 작성. Tailscale·SSH·VS Code Remote·tmux·Mosh + 시나리오·보안 + 트러블슈팅 6종.

댓글