AI 인사이트

VS Code Remote Development로 서버 성능을 내 손끝에 — SSH 원격 개발 완전 정복

seunghyeonlab 2026. 4. 29. 12:12

hero

로컬 맥북이 느려서 개발 속도가 답답했던 적 있다면, 이 글이 그 답이다. 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은 유휴 상태에서 연결이 끊기는 걸 방지한다. 장시간 학습 돌릴 때 이게 없으면 세션이 죽는 상황이 반드시 온다.

SSH 연결 과정

인증 성공 후 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/configAddKeysToAgent yesUseKeychain 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 구독