termal.in

← 블로그

Cursor를 SSH로 서버에 연결하는 법 (MCP 설정)

· 업데이트 2026년 9월 29일 · Termalin Team cursormcpai-agentssshtutorial

Cursor의 AI 에이전트를 MCP 서버를 통해 SSH로 서버에 연결하는 방법입니다. 개인 키가 에이전트의 환경에 결코 들어가지 않게 하면서요. 왜 이걸 해야 하는지부터 시작하죠. Cursor의 에이전트는 저장소 안에서는 편안합니다. 하지만 작업이 저장소를 벗어나는 순간 — 서비스가 왜 안 뜨는지 확인하고, 마이그레이션을 돌리고, 실제 상자에서 nginx 설정을 고치는 일 — SSH가 필요해집니다. 그리고 불편한 사실은 이것입니다. Cursor의 에이전트는 내 머신에서 터미널 명령을 실행하므로, 키가 ~/.ssh나 돌고 있는 ssh-agent에 잠금 해제된 채 있으면, 뭔가를 “줄” 필요조차 없습니다 — ssh prod가 이미 됩니다. 결정하지도 않은 채 기본으로 전체 서버 접근을 넘긴 셈입니다.

더 나은 구도가 있습니다. 에이전트는 요청하고, 내가 제어하는 무언가가 인증을 담당하는 것이죠. 붙여 넣은 키 경로가 왜 되돌릴 수 없는 단 하나의 수인지(영어)와 MCP 서버가 실제로 무엇인지(영어)는 따로 써 뒀습니다. 이 글은 Cursor를 위한 실전 버전입니다. 20분, VPS 하나, 그리고 키가 에이전트의 손에 결코 들어가지 않는 구성입니다.

준비물

  • Termalin — 데스크톱 앱, Free 요금제면 충분합니다. 내장 MCP 서버를 갖춘 SSH 클라이언트로, 그 서버가 Cursor와 대화할 대상입니다.
  • 같은 머신의 Cursor.
  • Termalin에 저장된 호스트 하나 — 첫 실행에는 위험이 낮은 것을 고르세요. 스테이징, 장난감 VPS, RSS 리더만 돌리는 상자 같은 것요.

1단계 — 에이전트 액세스 켜기

에이전트 액세스는 기본적으로 꺼져 있습니다. Termalin에서 **설정 → 에이전트 액세스 (MCP)**를 열어 켠 다음, 에이전트가 닿아도 되는 호스트를 체크하세요. 그 목록 밖의 것은 Cursor 입장에서는 존재하지 않습니다 — 새 호스트는 에이전트가 말로 설득할 수 있는 게 아니라, 앱에서 내가 내리는 결정입니다.

내부에서는 두 가지가 일어납니다. Termalin이 MCP 서버용 호스트 인벤토리를 에이전트 전용 인증 항목으로 씁니다 — 비밀번호나 키는 그 파일에 들어가지 않습니다. 그리고 인증은 앱의 키 커스터디언(사용자 대신 키를 보관하고 서명하는 구성 요소)에 남습니다. 키를 한 번 잠금 해제하면 Termalin이 에이전트를 대신해 서명합니다. 에이전트가 읽을 키 파일이 없으니 흘릴 것도 없습니다 — 이는 위의 ~/.ssh 뒷문도 닫아 버립니다. 보호할 가치가 있는 호스트가 더 이상 디스크에 느슨한 키를 둘 필요가 없어지기 때문이죠.

설정에 들어온 김에 각 호스트의 에이전트 정책을 지정하세요: 전체 액세스, 허용된 명령만, 또는 차단. 아끼는 것이라면 허용 목록이 올바른 출발점입니다.

2단계 — mcp.json에 서버 등록하기

Cursor는 JSON 파일에서 MCP 서버를 읽어 들입니다 — 그 프로젝트에만 적용하려면 프로젝트 루트의 .cursor/mcp.json, 어디서나 서버를 쓰려면 ~/.cursor/mcp.json입니다. Termalin처럼 로컬(stdio) 서버인 경우, 항목은 명령과 그 인자입니다:

{
  "mcpServers": {
    "termalin": {
      "command": "<path>/termalin-mcp",
      "args": []
    }
  }
}

이게 통합의 전부입니다. 여기서는 전역 파일이 합리적인 선택입니다 — 서버 접근은 저장소마다의 관심사가 아니니까요. Cursor를 재시작하거나(또는 설정에서 MCP 목록을 새로고침하고), 서버가 running으로 표시되는지 확인하면, 에이전트에 도구가 나타납니다: hosts_list, ssh_exec, 지속 세션(session_open, session_exec), SFTP 읽기와 쓰기.

Cursor 특유의 메모 하나: 기본적으로 Cursor는 도구 호출 전에 묻습니다. 첫 세션들에서는 그걸 켜 두세요. 자동 승인은 에이전트가 각 도구를 어떻게 쓰는지 지켜본 뒤에 한 번에 하나씩 넓혀야 할 편의입니다 — 호스트 목록을 넓히는 것과 같은 방식이죠.

3단계 — 진짜 잡일 맡기기

데모 명령으로 시작하지 마세요. 실제로 할 법한 작업으로 시작하세요:

staging-1의 헬스 체크가 어제 배포 이후로 계속 깜빡여. 왜 그런지 알아내서 고쳐 줘.

에이전트가 일하는 걸 지켜보세요. hosts_list를 호출해 staging-1을 보고, 세션을 열고, 실마리를 당기기 시작합니다 — 서비스 상태, 최근 로그 100줄, 돌고 있는 것과의 설정 diff. 수정안을 제안하고, 적용하고, 헬스 체크가 초록으로 바뀌는지 검증합니다.

이게 마음 편한 이유는 그 어느 것도 보이지 않게 일어나지 않기 때문입니다. 에이전트가 여는 모든 세션이 Termalin에 라이브 터미널 탭으로 나타나고, **워치 그리드(영어)**는 열린 모든 세션을 나란히 보여 주며 에이전트가 모는 타일을 강조합니다. 나중에 요약을 읽는 게 아니라, 명령이 실행되는 대로 떨어지는 걸 지켜보고 언제든 끼어들 수 있습니다.

경계가 어디에 있나

아끼는 것에 에이전트를 가리키기 전에 알아 둘 기본값:

  • 키는 에이전트의 환경에 결코 닿지 않습니다. 커스터디언이 서명하고, 에이전트는 요청합니다. 접근 해지는 함대 전체에 걸친 키 교체가 아니라 설정의 토글입니다.
  • 에이전트의 범위는 1단계에서 지정한 허용 목록이고, 각 호스트의 명령 정책이 거기서 실행할 수 있는 것을 한정합니다.
  • 내 세션에 타이핑하는 것은 별개입니다. 기본적으로 에이전트는 자기 세션을 엽니다. 내가 이미 열어 둔 세션 안에서 행동하는 것은 별도의 동의 토글이며 — 조용히 묻어 타는 일은 결코 없습니다.
  • 녹화가 에이전트 활동을 표시합니다. 세션 녹화는 출력만 담고 — 키 입력은 결코 담지 않으며 — 모든 에이전트 명령은 감사 로그에서 에이전트의 것으로 태그되고, 어느 기기와 IP에서 왔는지도 함께 남습니다. 새벽 2시에 “그것이 한 일”과 “내가 한 일”을 구분할 수 있습니다.

데스크톱이 곁에 없나요? 호스팅 엔드포인트를 쓰세요

에이전트가 내 데스크톱이 없는 곳에서 돈다면 — CI, 클라우드 샌드박스 — 앱 대신 호스팅 MCP 서버를 쓰세요. 대화형으로는 Cursor에 https://termal.in/mcp를 URL로 추가하고 Termalin 페이지에서 한 번 로그인하세요(OAuth, 붙여 넣을 키 없음). 무인 실행에는 Termalin 웹 캐비닛에서 API 키를 만들어 클라이언트를 호스팅 MCP 엔드포인트로 가리키게 하세요. Cursor의 mcp.json은 원격 서버도 URL로 받습니다:

{
  "mcpServers": {
    "termalin": {
      "url": "https://termal.in/api/v1/mcp",
      "headers": { "Authorization": "Bearer tk_live_…" }
    }
  }
}

(쓰는 Cursor 빌드가 원격 서버의 인증 헤더를 아직 지원하지 않으면 로컬 stdio 서버에 머무르세요 — 어차피 그쪽이 더 나은 기본값입니다.) 호스팅 엔드포인트는 터널 에이전트로 등록한 서버에만 닿고, 각 실행은 단기 인증서로 인증합니다 — 같은 커스터디언 발상, 어디에도 상주 자격 증명 없음. 키는 특정 서버로 범위가 한정되고, 내가 고른 일정에 따라 만료되며, 해지하면 즉시 죽습니다. 자세한 내용은 MCP 문서에 있습니다.

몸에 배게 하는 습관

첫 주는 타자가 아주 빠른 새 팀원을 온보딩한다고 여기세요. 워치 그리드를 열어 두세요. 끝 상태가 분명한 잡일을 주고 — “헬스 체크를 통과시켜라”, “인증서를 갱신시켜라” — 어떻게 거기에 도달하는지 읽으세요. 에이전트가 지루한 도구에 대해 자동 승인을 얻을 때까지 Cursor의 호출별 승인을 켜 두고, 호스트 허용 목록은 재미없는 상자부터 하나씩 넓히세요.

비대칭이 핵심입니다. 에이전트는 진짜 범위를 얻고, 나는 되돌릴 수 없는 그 한 가지를 쥔 채로 둡니다. (Claude Code를 돌린다면? 같은 설정, 명령 하나(영어).)


Termalin의 Free 요금제는 데스크톱 앱 전체이고, 모든 새 계정은 14일 Pro 체험으로 시작합니다 — 다운로드하거나, Cursor SSH 페이지에서 시작하거나, 먼저 MCP 문서를 읽어 보세요.

호스트 한 대에서 먼저 써 보세요.

Termalin은 여러분과 여러분의 에이전트를 위한 빠른 SSH 클라이언트입니다.

무료 요금제 · Pro 14일 무료 체험 · 요금