VSCode의 SSH 에이전트는 왜 문제인가 (Fly.io, 2025)
VSCode's SSH Agent Is Bananas (2025)
TL;DR Highlight
VSCode Remote-SSH는 원격에 Node와 에이전트를 깔아 파일·셸을 다 만진다
Who Should Read
LLM 에이전트를 원격 샌드박스 서버에서 VSCode Remote-SSH로 돌리려는 개발자
Core Mechanics
- VSCode는 원격에 에이전트를 깐다
- Emacs Tramp는 원격 셸 명령만 쓰는 방식이다.
- VSCode는 Bash 스크립트로 Node 바이너리를 포함한 에이전트를 내려받는다.
- 에이전트가 할 수 있는 일이 넓다
- 포트포워딩된 SSH 위에서 WebSocket으로 로컬 VSCode에 연결된다.
- 파일시스템 탐색, 임의 파일 수정, 자체 셸 PTY 실행, 스스로 상주가 가능하다.
- 저자는 운영 서버 편집이 불안하다
- 개발 서버에서 원격 편집을 허용하는 것도 좀 불안하다고 한다.
- 장애 대응 중인 프로덕션에서 쓰면 격분할 일이라고 쓴다.
- LLM 루프는 깨끗한 리눅스에서 돌리고 싶다
- LLM이 코드를 생성하고 실행해 에러를 다시 LLM에 넘기는 폐쇄 루프(agent)가 환각을 어느 정도 줄인다.
- 이 루프를 개발 노트북이 아닌 즉시 뜨는 일회용 리눅스에서 돌리고 싶다고 한다.
- Fly Machine 연결에는 영향이 없었다
- 커스텀 연결을 VSCode에서 쓰는 데는 이 내용을 몰라도 됐다고 한다.
- 이 글은 알게 된 걸 공유하는 블로그 글이다.
Community Reactions
- 원격 개발에는 오히려 장점이라는 의견
- 여러 팀에서 이 확장을 많이 썼지만 문제없었다는 경험이 있다.
- SSH 접근을 제한해 보안 가드레일을 만들 수 있다는 의견이다.
- 방향이 반대라서 문제라는 의견
- 원격에서 로컬로 코드가 실행될 수 있다는 점이 문제라는 의견이다.
- 한 댓글은 공식 확장 보안 공지에 침해된 원격이 로컬에서 코드를 실행할 수 있다고 적혀 있다고 인용했다.
- 샌드박스라고 믿으면 위험하다는 의견
- 신뢰할 수 없는 원격이라면 로컬까지 장악될 수 있어 샌드박스가 아니라는 지적이다.
- 여기서 agent는 LLM이 아니라 VSCode의 SSH 에이전트라는 설명도 있었다.
- 용량과 대안 경험
- .vscode-server가 6.0G였다는 경험이 있다.
- Zed의 SSH remote로 옮겼다는 경험, code serve-web을 Tailscale로 노출해 SSH 없이 쓰는 실험도 있었다.
How to Apply
- 내 서버의 .vscode-server 확인하기
- 원격 서버에서 du -h -d 0 ~/.vscode-server를 실행해 크기와 상주 프로세스를 확인하라.
- ps로 node 프로세스가 남아 있는지도 같이 보라.
- 프로덕션 서버의 Remote-SSH 접속 정책 정하기
- 운영 서버에는 VSCode Remote-SSH 사용을 금지하거나 접속 가능한 계정을 제한하라.
- 팀 위키에 개발 서버와 운영 서버 규칙을 따로 적어라.
- LLM 에이전트 서버는 신뢰 경계로 분리하기
- 에이전트가 돌아갈 샌드박스에 VSCode로 붙을 땐 침해된 원격이 로컬을 칠 수 있다고 가정하라.
- 로컬 노트북에 민감한 자격증명을 두지 않거나 별도 환경에서 접속하라.
Try It
# 원격 서버에 SSH로 접속한 터미널에 붙여넣기 (VSCode Remote-SSH 흔적 점검)
du -h -d 0 ~/.vscode-server
ps aux | grep -i '[.]vscode-server'
# 이어서 해 볼 것: 결과를 보고 팀의 접속 정책에 반영하기Terminology
관련 논문
같은 시뮬레이션, 다른 근거: 도구 출력을 파일로 넘기면 LLM 에이전트 정확도가 어디서 깎이나
긴 툴 출력을 파일로 넘기자 GPT-5.1은 정확도 11.3%p 하락, 정식 출력 지정하니 회복
가짜 뉴스가 진짜 폭락을: LLM 트레이딩 에이전트 대상 정보 주입 공격
가짜 헤드라인 한 줄로 LLM 트레이딩 에이전트 62%를 조종했다(프롬프트 주입은 14%)
Harness Engineering 101: LLM은 뇌, harness는 몸
에이전트는 JSON 배열을 관리하는 루프이고, 16개 챕터로 직접 만들어 본다
Harness²: 에이전트 harness를 스스로 고쳐 쓰는 재귀 최적화 프레임워크
모델은 고정하고 harness를 재귀로 고쳤더니 벤치마크 점수가 최대 11.8%p 올랐다
해고된 Savannah 경찰관, ICE 요원 남편에게 Flock 계정 공유
경찰관이 Flock 계정을 남편(ICE 요원)에게 공유했고, 감사에서 983건 검색이 드러나 해고됐다
tmux와 Claude Code: 세션, send-keys, 그리고 한계선
tmux로 Claude Code 여러 개를 돌리면 편하지만 에이전트 4개쯤에서 한계가 온다
Hybrid Reasoning Agents: 잠재 공간에서 생각하고 텍스트로 행동하는 LLM 에이전트
잠재 공간 추론과 텍스트 도구 호출을 섞었더니 성능 10.4%↑, 토큰 최대 54.7%↓