로컬 맥북이 느려서 개발 속도가 답답했던 적 있다면, 이 글이 그 답이다. VS Code Remote Development를 제대로 세팅하면 서버의 M2 Pro, A100 같은 고성능 자원을 로컬처럼 쓸 수 있다.
왜 로컬 개발 환경이 한계인가
노트북 한 대에 개발 환경 전부를 구겨 넣는 건 생각보다 많은 걸 희생한다.
- GPU가 필요한 ML 학습은 아예 못 돌린다
- RAM 16GB 안에서 Docker, IDE, 브라우저가 동시에 돌아가야 한다
- 팀 서버의 공용 데이터셋에 접근할 때마다
scp로 복사해야 한다 - 환경 충돌 나면 로컬 Python 가상환경 죽는다
처음엔 이걸 당연하게 받아들였다. 팀원이 "그냥 SSH 연결해서 VS Code로 쓰면 되잖아요"라고 말하기 전까지는.
Remote-SSH 확장 설치와 SSH Config 등록
가장 먼저 할 일은 확장 팩 설치다.
VS Code 마켓플레이스에서 Remote Development 확장 팩을 설치한다. 이 팩 하나로 Remote - SSH, Remote - Containers, WSL이 한꺼번에 들어온다.
# 터미널에서 바로 설치하고 싶다면
code --install-extension ms-vscode-remote.vscode-remote-extensionpack
그다음 SSH Config 파일에 서버 정보를 등록한다.
# ~/.ssh/config 파일 열기
code ~/.ssh/config
Host my-dev-server
HostName 192.168.1.100
User seunghyeon
IdentityFile ~/.ssh/id_rsa
ServerAliveInterval 60
ServerAliveCountMax 3
ServerAliveInterval은 유휴 상태에서 연결이 끊기는 걸 방지한다. 장시간 학습 돌릴 때 이게 없으면 세션이 죽는 상황이 반드시 온다.
인증 성공 후 VS Code가 원격 서버에 자동으로 VS Code Server를 설치한다. 이 과정은 최초 1회만 발생하고, 이후 연결은 몇 초 안에 끝난다.
첫 연결 시 실패 케이스
처음 시도했을 때 이런 에러를 마주쳤다.
[10:32:15.201] > ssh: connect to host 192.168.1.100 port 22: Connection refused
원인은 두 가지 중 하나다.
| 원인 | 확인 방법 | 해결 |
|---|---|---|
| SSH 데몬 미실행 | systemctl status sshd |
sudo systemctl start sshd |
| 방화벽 차단 | ufw status |
sudo ufw allow 22 |
| 키 권한 문제 | ls -la ~/.ssh/ |
chmod 600 ~/.ssh/id_rsa |
키 권한 문제가 의외로 자주 발생한다. id_rsa 파일이 644면 SSH가 거부한다. 반드시 600이어야 한다.
연결 후 원격 개발 실제 사용
연결에 성공하면 VS Code 왼쪽 하단에 SSH: my-dev-server 배지가 붙는다. 이 상태에서:
- 파일 탐색기는 서버 파일시스템을 보여준다
- 터미널은 서버 쉘이 열린다
- 확장 프로그램을 원격 서버에 별도 설치할 수 있다
# 원격 터미널에서 바로 확인
uname -a
# Linux dev-server 5.15.0 #1 SMP x86_64 GNU/Linux
nvidia-smi
# GPU 정보가 곧바로 출력됨
파일을 수정하면 네트워크를 통해 서버에 직접 저장된다. scp도, SFTP도 필요 없다. 포트 포워딩도 간단하다.
// .vscode/settings.json
{
"remote.SSH.defaultExtensions": [
"ms-python.python",
"ms-toolsai.jupyter"
]
}
defaultExtensions에 등록하면 새 서버에 연결할 때마다 자동으로 설치된다.
Jupyter 노트북을 원격에서 실행하고 로컬 브라우저로 보는 것도 포트 포워딩 설정 한 줄이면 된다.
운영 환경별 주의사항
macOS에서 연결할 때: ~/.ssh/config에 AddKeysToAgent yes와 UseKeychain yes를 추가해야 재부팅 후에도 키를 기억한다.
Host my-dev-server
...
AddKeysToAgent yes
UseKeychain yes
Docker 컨테이너로 확장: Remote Development 팩에 포함된 Dev Containers를 쓰면 컨테이너 안에서도 동일한 방식으로 작업 가능하다. devcontainer.json 하나로 팀 환경을 완전히 통일할 수 있다.
연결이 자꾸 끊길 때: 서버 측 /etc/ssh/sshd_config를 확인한다.
ClientAliveInterval 60
ClientAliveCountMax 10
이 두 줄이 없으면 서버가 유휴 세션을 먼저 끊는다.
마무리
로컬 사양 걱정 없이 서버 자원 그대로 쓰는 게 Remote Development의 핵심이다. SSH Config 등록 → 확장 설치 → 연결 이 세 단계면 설정은 끝난다. 다음 글에서는 Dev Containers로 팀 개발 환경을 코드로 정의하는 방법을 다룬다.
🐦 X에서 더 빠르게: @baegseungh7061
📚 이 시리즈 더 보기: AI 인사이트
💌 새 글 알림: X 팔로우 또는 블로그 RSS 구독
'AI 인사이트' 카테고리의 다른 글
| Superpowers — 코딩 에이전트가 스스로 설계·계획·TDD를 수행하는 완전 자동 개발 방법론 (0) | 2026.05.07 |
|---|---|
| everything-claude-code — 10개월 에이전트 노하우를 Claude Code에 이식하는 법 (0) | 2026.05.07 |
| ffmpeg + Tailscale로 Mac Mini 클러스터 영상 파이프라인 직접 구축하기 (0) | 2026.05.06 |
| Git Worktree로 브랜치 전환 없이 병렬 개발하는 법 (0) | 2026.05.01 |
| DeepSeek-V3 로컬 추론 환경 구축 — Ollama로 API 비용 제로 만들기 (0) | 2026.04.29 |