VSCode의 SSH Agent는 황당함

1 month ago 7

  • VSCode와 원격 편집

    • VSCode는 SSH를 통해 원격 편집을 지원하는 기능을 가지고 있음.
    • 많은 사용자가 VSCode와 LLM(대형 언어 모델)을 사용하여 코드 생성을 하고 있음.
    • LLM이 잘못된 코드를 생성하는 경우를 "환각"이라고 부르며, 이를 해결하기 위해 "에이전트" 설정을 통해 LLM과 실행 환경 간의 루프를 닫는 것이 중요함.
    • 이 과정은 LLM이 코드를 생성하고, 에이전트가 코드를 실행하며, 오류를 생성하고, 이를 LLM에 피드백하여 반복하는 방식으로 이루어짐.
  • 개발 환경에서의 문제점

    • 이러한 반복적인 개발 프로세스가 개발자 노트북에서 발생하는 것은 바람직하지 않음.
    • LLM은 시스템 구성에도 영향을 미칠 수 있기 때문에, 깨끗한 상태의 Linux 인스턴스에서 이러한 작업을 수행하는 것이 좋음.
  • Emacs와 Tramp

    • Emacs는 Tramp라는 유용한 Elisp를 통해 원격 편집 시스템을 지원함.
    • Tramp는 SSH 세션을 통해 Bourne 쉘 명령을 실행할 수 있는 인터랙티브 환경에 연결할 수 있음.
  • VSCode의 접근 방식

    • VSCode는 Tramp와 유사한 기능을 가지고 있지만, Tramp와 달리 원격 연결에서 전체적인 침입을 시도함.
    • Bash 스니펫 스테이저를 실행하여 에이전트를 다운로드하고, Node의 바이너리 설치를 포함함.
    • 에이전트는 포트 포워딩된 SSH를 통해 실행되며, WebSockets 연결을 통해 VSCode 프론트엔드와 연결됨.
    • 이 연결의 기본 프로토콜은 파일 시스템을 탐색하고, 임의의 파일을 편집하며, 자체 쉘 PTY 프로세스를 시작하고, 지속성을 가질 수 있음.
  • 보안 우려

    • 개발 서버에서 VSCode를 원격 편집 용도로 무분별하게 쓰면 민감 정보나 인프라 보호에 문제를 일으킬 수 있음
    • 특히 실제 운영 환경(프로덕션)에서 문제가 발생했을 때 VSCode 원격 편집을 사용하는 것은 매우 위험하다는 우려가 있음
  • 결론

    • Fly.io 내부적으로는 Fly Machine과 VSCode를 직접 연결하는 데 이런 방식의 복잡한 에이전트가 반드시 필요한 것은 아님
    • 다만 블로그 목적상 VSCode 원격 연결 방식을 조사하게 되었고, 조사 과정에서 위와 같은 사실을 알게 되었음

Read Entire Article