termal.in

에이전트 네이티브 SSH

SSH를 위한 MCP 서버

Termalin은 평범한 SSH/터미널 클라이언트이면서 MCP 서버를 내장하고 있습니다. claude.ai나 ChatGPT에 커스텀 커넥터로 추가하거나, Claude Code 또는 Model Context Protocol을 지원하는 에이전트를 호스트에 연결하면 SSH와 SFTP로 명령을 실행하고 파일을 읽고 씁니다. 키는 키 에이전트 밖으로 나가지 않으며, 모든 동작이 실시간으로 미러링되고, 녹화되고, 감사 로그에 기록됩니다.

호스팅 서버는 공식 MCP 레지스트리에 in.termal/termalin-web으로 등록되어 있습니다.

하는 일

MCP는 AI 에이전트를 도구에 연결하는 개방형 표준입니다. 대부분의 MCP 서버는 API를 감싸지만, Termalin이 감싸는 것은 내 서버입니다. 그래서 에이전트가 실제로 인프라를 운영합니다. 로그를 따라가고, 서비스를 재시작하고, 디스크를 확인하고, 설정을 수정하고, 배포합니다. 인증은 Termalin의 SSH 키 에이전트를 거치므로 개인 키가 에이전트나 모델에 전달되는 일은 없습니다.

도구

호스팅 엔드포인트는 도구 16개를, 로컬 termalin-mcp 서버는 22개를 제공합니다. 아래의 공통 핵심 도구에 세션, 터널, 라이브 터미널 도구가 더해집니다. ‘호스팅 엔드포인트’라고 표시된 행은 호스팅 쪽에만 있습니다. 인수를 포함한 전체 목록은 MCP 도구 레퍼런스(영어)에 있습니다. 공통 핵심 도구는 다음과 같습니다.

도구하는 일
hosts_list에이전트가 접근할 수 있는 호스트 목록을 반환합니다.
ssh_exec호스트에서 명령을 한 번 실행하고 출력과 종료 코드를 반환합니다.
ssh_exec_many같은 명령을 여러 호스트에서 한꺼번에 실행합니다(호스팅 엔드포인트).
job_start / status / stop / list오래 걸리는 빌드나 마이그레이션을 백그라운드에서 시작하고, 나중에 로그와 종료 코드를 확인하고, 중지합니다(호스팅 엔드포인트). 작업은 에이전트의 턴이나 연결이 끝나도 계속 실행됩니다.
server_metrics모든 서버의 최신 CPU, 메모리, 디스크, 부하, 네트워크 수치 또는 한 서버의 상세 정보와 최근 몇 시간의 평균값·최댓값을 반환합니다. Termalin 모니터링에서 읽어 오며 서버에서는 아무것도 실행하지 않습니다(호스팅 엔드포인트 전용).
alerts_list모니터링이 지금 문제라고 알리는 항목(디스크가 차오름, 메모리나 부하가 한계에 붙어 있음, 실패한 서비스, 만료가 임박한 인증서, 오프라인 서버)과 최근 7일 동안 해소된 항목을 반환합니다(호스팅 엔드포인트 전용).
sftp_listSFTP로 디렉터리 목록을 가져옵니다.
sftp_readSFTP로 텍스트 파일을 읽습니다(크기 제한, 텍스트 전용). 호스팅 엔드포인트용이며, 로컬 서버는 sftp_get을 사용합니다.
sftp_writeSFTP로 텍스트 파일을 씁니다. 호스팅 엔드포인트용이며, 로컬 서버는 sftp_put을 사용합니다.
generate_password필요할 때 강력한 비밀번호를 생성합니다. 길이와 문자 종류는 직접 정합니다.
data_query호스트의 데이터베이스에 쿼리를 실행합니다. 비밀번호 없이, 키 없는 터널을 통해 로컬 신뢰(Postgres peer 인증, MySQL socket 인증, redis-cli, mongosh, sqlite3)로 각 엔진의 자체 클라이언트를 실행합니다. 기본값은 읽기 전용입니다.
data_tables호스트 데이터베이스의 테이블 / 컬렉션 / 키 목록을 가져옵니다. 같은 비밀번호 없는 경로를 사용합니다.
data_schema테이블 하나의 컬럼을 설명합니다.

로컬 서버는 여기에 다음 도구를 더합니다.

도구하는 일
session_open / exec / close / list지속되는 SSH 세션을 열고, 그 안에서 명령을 실행하고, 세션을 관리합니다.
sftp_get / sftp_put파일을 다운로드하고 업로드합니다.
tunnel_open / close / list호스트에서 포트 포워딩을 열고 관리합니다. 그 뒤의 서비스에 접근하거나, 로컬 서비스를 공개하거나, 호스트를 거쳐 라우팅합니다.
terminal_open / run / run_many / sessions / hosts실행 중인 데스크톱 앱을 조작합니다. 라이브 터미널 탭을 열거나, 이미 열어 둔 세션에 들어와 함께 실행합니다(동의 필요).
data_list / tables / schema / query저장한 데이터베이스를 탐색하고 쿼리합니다. 데이터베이스, 테이블, 컬럼 목록을 보고 읽기 전용 쿼리를 실행합니다. 기본값은 꺼짐이며, 연결별로 설정하고 동의가 필요합니다.

연결하는 세 가지 방법

1 · claude.ai / ChatGPT — 이미 쓰고 있는 채팅에서

설치도, 붙여 넣을 키도 필요 없습니다. Termalin을 커스텀 커넥터로 추가하고 대화로 서버를 관리하세요.

  • claude.ai: Termalin 커넥터 등록 페이지를 열고 → Connect(또는 Settings → Connectors → Add custom connector → https://termal.in/mcp)
  • ChatGPT: 앱 디렉터리에서 Termalin을 추가(Apps에서 Termalin 검색), 또는 Settings → Connectors → 같은 URL
  • Claude Code: claude mcp add --transport http termalin https://termal.in/mcp를 실행한 뒤 /mcp로 로그인하세요. 로그인 방식의 원격 MCP 서버를 지원하는 다른 클라이언트(Codex, Cursor, VS Code)도 같은 URL을 씁니다.

채팅이 Termalin 로그인 페이지를 엽니다. 한 번 승인하면 서버 목록을 보고, 명령을 실행하고, 파일을 읽고 쓰고, 모니터링과 알림을 확인합니다. “prod 디스크 확인해 줘”, “nginx 로그 따라가 줘”, “그 설정 고쳐 줘”를 대화에서 바로 요청하세요. 액세스는 OAuth로 부여되며, 등록한 내 서버로만 범위가 제한되고, 감사되며, 언제든 해지할 수 있습니다. 연결된 앱마다 고유한 명령 정책(전체 액세스, 허용 목록, 읽기 전용)을 가지며, 계정의 AI 앱 카드에서 설정합니다.

전체 안내: ChatGPT 커스텀 커넥터와 claude.ai 커스텀 커넥터.

처음 쓰는 사용자가 놓치기 쉬운 전제 조건이 있습니다. 호스팅 서버는 Pro 또는 14일 체험 계정이 필요합니다. 그리고 채팅은 등록된 서버에만 접근합니다. termal.in/account에 로그인해 Connector 추가를 클릭하고, 한 줄짜리 설치 명령을 복사해 서버에서 실행하세요(데스크톱 앱에만 있는 호스트에는 접근할 수 없습니다). 그리고 대화 안에서 입력창의 도구 메뉴로 Termalin을 켜세요. 설정에서 커스텀 커넥터를 추가하는 것만으로는 부족할 때가 있습니다.

2 · 로컬 서버(내 컴퓨터에서 실행)

에이전트의 MCP 클라이언트를 번들된 termalin-mcp 바이너리에 연결하세요. Claude Code에서는 다음과 같습니다.

claude mcp add termalin -- <path>/termalin-mcp

또는 MCP 클라이언트 설정에 다음을 넣으세요.

{
  "mcpServers": {
    "termalin": { "command": "<path>/termalin-mcp" }
  }
}

로컬 서버는 설정 → 에이전트 액세스 (MCP)에서 고른 호스트에 접근합니다(에이전트 전용 인증으로 기록되며, 디스크에 비밀번호를 저장하지 않습니다). 각 호스트에는 호스트 자체에서 설정하는 고유한 에이전트 액세스 수준이 있습니다. 전체 액세스, 허용된 명령만, 차단 중 하나입니다.

3 · API 키를 쓰는 호스팅 엔드포인트(CI, 스크립트, 다른 에이전트)

웹 캐비닛에서 API 키를 만들고, 원하는 에이전트를 HTTP MCP 엔드포인트에 연결하세요.

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

내 컴퓨터에 아무것도 열려 있지 않아도 터널로 연결된 서버(한 줄 설치 에이전트를 실행 중인 서버)에서 명령을 실행하고 파일을 옮깁니다. 단기 인증서로 인증하므로 키를 내주지 않습니다. API 키는 특정 서버로 범위를 제한하고, 명령 정책(전체 / 허용 목록 / 읽기 전용)을 지정하고, 만료 기간(30 / 90 / 365일)을 정하고, 언제든 해지할 수 있습니다.

경로마다 접근하는 호스트가 다릅니다. 로컬 서버는 앱에서 내보낸 호스트를, 채팅 커스텀 커넥터와 API 키 엔드포인트는 등록한 터널 서버(Connector)를 대상으로 합니다. 에이전트가 실행되는 곳에 맞는 쪽을 고르세요.

설정 가이드

클라이언트별 단계별 안내입니다.

통제권은 내게

  • 에이전트 액세스는 기본적으로 꺼져 있습니다. 에이전트가 내 라이브 세션에 입력하도록 허용하는 것은 또 다른 별도 토글입니다.
  • 액세스는 세밀하게 제어됩니다. 데스크톱에서는 호스트별(전체 액세스 / 허용된 명령만 / 차단), 호스팅 엔드포인트에서는 API 키별과 연결된 AI 앱별(전체 / 허용 목록 / 읽기 전용)로 설정합니다. 그래서 한 서버에서는 읽기 전용, 다른 서버에서는 git만 실행하도록 할 수 있습니다.
  • 에이전트는 키를 갖지 않습니다. Termalin의 SSH 키 에이전트나 단기 인증서로 인증합니다.
  • 에이전트의 모든 명령은 세션 녹화에 표시되고, 워치 그리드에서 실시간으로 보이며, 감사 로그에 기록됩니다.
  • 호스팅 실행은 API 키별로 속도 제한과 시간 제한이 적용됩니다.

자주 묻는 질문

claude.ai나 ChatGPT에 내 서버를 연결하려면 어떻게 하나요?

claude.ai에서는 커넥터 디렉터리의 Termalin 등록 페이지를 열고 Connect를 클릭합니다(또는 Settings → Connectors → Add custom connector → https://termal.in/mcp로 URL을 직접 추가합니다). Termalin 로그인 페이지가 열리면 승인하세요. 그러면 Claude가 채팅 안에서 바로 서버 목록을 보고, 명령을 실행하고, 파일을 관리합니다. ChatGPT에서는 앱 디렉터리에서 Termalin을 추가하거나(Apps에서 Termalin 검색), 같은 URL을 Settings → Connectors에 추가합니다. 붙여 넣을 API 키는 없습니다. 액세스는 OAuth로 부여되며, 등록한 내 서버로만 범위가 제한되고, 언제든 해지할 수 있습니다.

SSH용 MCP 서버란 무엇인가요?

SSH용 MCP 서버는 SSH와 SFTP를 Model Context Protocol을 통해 AI 에이전트가 호출할 수 있는 도구로 제공합니다. 그래서 에이전트가 서버에서 명령을 실행하고 파일을 읽고 씁니다. 크게 두 가지 형태가 있습니다. 독립형 서버(예: ssh-mcp, mcp-ssh)는 실행되는 자리에 키를 보관하고, 다른 하나는 MCP 서버를 내장한 SSH 클라이언트(Conduit, XPipe, Termalin)입니다. Termalin은 이 서버를 SSH 클라이언트에 내장하고 있습니다. 에이전트가 접근할 호스트는 사용자가 고르고 인증은 Termalin이 처리하므로, 에이전트는 개인 키를 전혀 다루지 않습니다.

AI 에이전트에게 SSH로 서버 액세스를 주려면 어떻게 하나요?

두 가지 방법이 있습니다. 호스팅: Connector로 서버를 등록한 다음, 에이전트에 https://termal.in/mcp를 추가하고 한 번 로그인하세요. Claude Code에서는 claude mcp add --transport http termalin https://termal.in/mcp를 실행한 뒤 /mcp로 로그인합니다. 스크립트와 CI에서는 API 키로 https://termal.in/api/v1/mcp를 씁니다. 데스크톱 앱을 실행하지 않아도 됩니다. 로컬: Termalin을 설치하고 설정 → 에이전트 액세스 (MCP)에서 원하는 호스트를 켠 다음, 번들된 서버를 claude mcp add termalin -- <path>/termalin-mcp로 등록하세요. 어느 쪽이든 MCP를 지원하는 에이전트(Claude Code, Cursor, Codex, 직접 만든 에이전트)라면 그 호스트 목록을 보고 SSH와 SFTP로 작업합니다.

AI 에이전트가 내 개인 키를 보지 않고 SSH를 쓸 수 있나요?

네. Termalin은 키 커스터디언(사용자 대신 키를 보관하고 서명하는 구성 요소)으로 동작합니다. 키를 한 번 잠금 해제하면 Termalin이 에이전트를 대신해 서명하므로, 개인 키가 에이전트나 모델에 전달되는 일은 없습니다. 호스팅 엔드포인트는 한 걸음 더 나아가, 키 대신 단기 SSH 인증서로 실행마다 인증합니다.

MCP 서버를 내장한 SSH 클라이언트에는 어떤 것들이 있나요?

2026년 10월 기준으로 다음이 있습니다. Conduit(SSH·RDP·VNC·웹 지원, 로컬 도구 약 60개, Apache-2.0, 로컬 소켓 전용). XPipe(로컬 HTTP MCP 서버. 기본값은 꺼짐이며, 변경을 켜기 전까지 읽기 전용). VibeShell(도구 약 28개, MIT, 로컬). 그리고 Termalin(로컬 도구 22개에 더해 https://termal.in/mcp의 16개 도구 호스팅 엔드포인트. claude.ai, ChatGPT, Claude Code, Codex, Cursor가 OAuth로 로그인하고, 서버에는 Connector를 통해 키 없이 접근하며, 연결별 명령 규칙과 감사 로그를 갖추고 Windows·macOS·Linux·iOS·브라우저에서 동작). SSH/RDP/VNC를 하나의 오픈 소스 앱으로 묶고 싶다면 Conduit, Docker와 VM 중심이라면 XPipe, 에이전트가 CI나 데스크톱이 꺼진 채팅에서도 동작해야 한다면 Termalin이 맞습니다. 전체 비교(영어)를 참고하세요.

데스크톱 앱이 실행 중이지 않아도 MCP 서버가 동작하나요?

두 가지 모드가 모두 있습니다. 로컬 서버는 데스크톱 앱과 함께 실행되며, 앱에서 내보낸 호스트를 대상으로 합니다. 호스팅 서버는 — 한 번 로그인으로 https://termal.in/mcp, 또는 API 키로 https://termal.in/api/v1/mcp — 데스크톱이 전혀 필요 없습니다. 키 없이 연결하는 Termalin Connector로 등록한 서버에 단기 인증서로 인증해 접근하므로, CI나 클라우드 샌드박스의 에이전트도 사용할 수 있습니다. 이 엔드포인트는 공식 MCP 레지스트리에 in.termal/termalin-web으로 등록되어 있습니다.