AI 기반 인프라 관리의 빠진 조각
Source: Dev.to
(번역할 텍스트를 제공해 주시면 한국어로 번역해 드리겠습니다.)
실제 문제: 이기종 인프라 간 조정
단일 서버만 있다면 인프라 관리가 간단합니다: SSH로 접속하고, 명령을 실행하고, 끝납니다.
실제 인프라—심지어 홈랩조차—는 드물게 단일 서버로 구성됩니다. 목적이 다르고, 접근 방식이 다르며, 장애 유형도 다른 여러 머신들의 집합이죠. 새로운 서비스를 배포하면 다섯 개 이상의 서로 다른 시스템을 건드릴 수 있습니다. 문제를 해결하려면 여러 호스트에 걸친 로그와 메트릭을 연관시켜야 합니다.
이때 AI 지원이 진정으로 도움이 될 수 있습니다. 개별 작업을 나보다 똑똑하게 수행하는 것이 아니라 조정 오버헤드를 처리하는 것이죠. AI는 다음을 할 수 있습니다.
- 리버스 프록시 서버에 SSH로 접속해 설정을 확인한다.
- 앱 서버로 이동해 배포 상태를 검증한다.
- 데이터베이스에 질의해 마이그레이션이 실행됐는지 확인한다.
- 모든 과정을 보고한다—내가 평범한 영어로 하고자 하는 일을 설명하는 동안.
현재 AI‑인프라 통합은 너무 제한적이어서 실용적이지 않거나, 보안 담당자를 불안하게 만드는 방식으로 자격 증명을 붙여넣어야 합니다. 나는 다른 방식을 원했습니다: Claude에게 “새 버전을 프로덕션에 배포해”라고 말하면 실제로 IP 주소, 비밀번호, 개인 키를 전혀 보지 않고 시스템 전반을 조정하도록 하는 것이죠.
그것은 편집증이 아니라 좋은 아키텍처입니다.
해결책: SSH MCP Bridge
MCP (Model Context Protocol)는 Claude, ChatGPT, VS Code Copilot과 같은 최신 AI 어시스턴트가 외부 도구와 연결하는 방식입니다. 명령 출력물을 복사‑붙여넣기 하는 대신, AI가 직접 호출할 수 있는 도구를 노출합니다. 생태계는 아직 초기 단계이지만 빠르게 성숙하고 있습니다.
SSH MCP Bridge는 AI 어시스턴트와 인프라 사이에 위치하는 MCP 서버입니다:
AI Assistant (Claude / ChatGPT / VS Code)
│
▼
SSH MCP Bridge
│
▼
Your Servers (web, db, cache, …)
AI가 보는 것
- 친숙한 서버 이름 목록 (
web-server,database,redis-cache). - 각 서버가 수행하는 작업에 대한 설명.
- 명령을 실행하고 세션을 관리하는 도구.
AI가 절대 보지 못하는 것
- IP 주소.
- SSH 개인 키.
- 비밀번호.
- 네트워크 토폴로지.
이는 보안 때문만이 아니라(그것이 주요 목적이지만) AI의 작업을 더 쉽게 만들기 위함이기도 합니다. 192.168.1.47 같은 주소를 고민하는 대신 “프로덕션 데이터베이스 서버”와 같이 인프라를 생각하게 됩니다.
두 가지 배포 방법
나는 필요가 달라서 두 가지 다른 사용 사례를 위해 이것을 설계했습니다.
| Mode | Typical Use‑case | How it works |
|---|---|---|
| STDIO 모드 | 로컬 배포(예: 노트북의 Claude Desktop). | 브리지는 Claude가 직접 통신하는 서브프로세스로 실행됩니다. 네트워크 노출이 없으며 인증 복잡성도 없습니다. |
| HTTP 모드 | 원격 배포(예: ChatGPT 통합, 중앙 집중식 MCP 서버). | 서버나 컨테이너에 브리지를 배포하고 HTTP/SSE를 통해 연결합니다. 간단한 API‑key 인증과 기업 환경을 위한 전체 OAuth 2.0/OIDC를 지원합니다. |
실제로 할 수 있는 일
문제 해결
“모든 서버의 디스크 사용량과 메모리를 확인하고, 문제가 있는지 알려줘.”
AI가 각 호스트에 질의하고 결과를 집계하여 간결한 요약을 제공합니다—이제 네 개의 터미널 탭을 열 필요가 없습니다.
배포
“앱 서버에서 최신 코드를 가져오고, 데이터베이스에 마이그레이션을 실행한 뒤, 애플리케이션을 재시작하고 응답을 확인해줘.”
한 문장으로 여러 서버를 올바른 순서대로 조정합니다.
설정 변경
“nginx 설정에 새로운 업스트림 서버를 추가하고 재로드해줘.”
AI가 현재 설정을 읽고, 편집을 수행한 뒤, 검증하고 적용합니다.
조사
“애플리케이션 로그의 마지막 50줄을 보여주고, nginx 접근 로그에 관련 오류가 있는지 확인해줘.”
서버 간 로그를 교차 참조하는 것이 대화식으로 변합니다.
핵심 인사이트: AI는 여러 명령과 여러 서버에 걸쳐 컨텍스트를 유지합니다. 방금 확인한 내용을 기억하고, 패턴을 감지하며, 시스템 전체 상태에 대해 추론할 수 있습니다.
세션 관리
SSH 연결은 설정하는 데 상대적으로 비용이 많이 듭니다. 모든 명령마다 새 연결을 열고 싶지는 않을 것입니다.
브리지는 세션 풀을 유지합니다:
- 호스트에 대한 연결이 설정되면, 연결은 열려 있는 상태를 유지하고 재사용됩니다.
- 세션은 구성 가능한 유휴 시간 제한 후 자동으로 종료됩니다.
- 풀 크기와 시간 제한은 브리지의 구성 파일을 통해 조정할 수 있습니다.
시작하기
-
리포지토리 복제
git clone https://github.com/yourname/ssh-mcp-bridge.git cd ssh-mcp-bridge -
서버 구성 (
config.yaml)servers: - name: web-server host: web.example.com user: ubuntu identity_file: ~/.ssh/id_rsa_web description: "Production web application" - name: database host: db.example.com user: postgres identity_file: ~/.ssh/id_rsa_db description: "PostgreSQL primary" -
STDIO 모드로 실행 (로컬)
./ssh-mcp-bridge --mode stdio -
HTTP 모드로 실행 (원격)
./ssh-mcp-bridge --mode http --listen 0.0.0.0:8080 --auth api-key -
AI 어시스턴트 연결
docs/ai-integration.md에 있는 Claude, ChatGPT, 또는 VS Code용 안내를 따라 주세요.
기여
- 레포를 포크하고 PR을 엽니다.
.editorconfig에 정의된 코드 스타일을 따릅니다.- 새로운 기능에 대해 단위 테스트를 추가합니다.
License
MIT © 2024 Your Name
SSH MCP Bridge는 키와 IP를 직접 관리하면서도 AI 기반 오케스트레이션의 생산성 향상을 누릴 수 있게 해줍니다. 한번 사용해 보시고, 어떤 것을 만들었는지 알려 주세요!
개요
SSH MCP Bridge는 Claude(또는 MCP와 호환되는 AI)가 MCP 프로토콜을 통해 원격 SSH 호스트에서 명령을 실행하도록 합니다. SSH 세부 사항을 추상화하여 AI가 호출할 수 있는 간단한 HTTP 또는 MCP 엔드포인트를 제공합니다.
-
모드 –
- Shell 모드 – 지속적인 셸 채널; 작업 디렉터리와 환경이 명령 사이에 유지됩니다.
- Exec 모드 – 상태 비저장, 격리된 명령; 각 명령이 자체 세션에서 실행됩니다.
-
세션 처리 – 유휴 시간 제한은 기본값이 30분입니다. 호스트당 동시 세션 수에 제한을 두어 자원 고갈을 방지합니다.
보안 고려 사항
인프라 접근은 매우 중요하므로, 브리지는 심층 방어(defense‑in‑depth) 를 기반으로 구축됩니다.
자격 증명 격리
- 브리지는 SSH 자격 증명을 저장하며, 클라이언트는 이를 볼 수 없습니다.
명령 수준 제어
- OS 수준 제한 – 설정한 SSH 사용자 이름에 따라 원격 OS가 허용하는 권한이 결정됩니다(예: 비루트 사용자는 특권 명령을 실행할 수 없음).
- 브리지 수준 허용/거부 목록 –
- 거부 목록 –
rm -rf또는sudo와 같은 패턴을 차단합니다. - 허용 목록 – 특정 화이트리스트에 포함된 명령만 실행하도록 제한합니다.
- AI는 사용자가 명시적으로 허용한 명령만 실행할 수 있습니다.
- 거부 목록 –
인증
- HTTP 모드는 다음을 지원합니다:
- API 키 – 간단한 설정.
- OAuth 2.0 / OIDC – 엔터프라이즈 수준(Auth0, Azure AD, Okta, Keycloak 등).
감사 로그
- 모든 명령은 타임스탬프, 사용자 ID(JWT in OAuth mode), 대상 호스트, 결과와 함께 기록됩니다.
- 컴플라이언스 또는 사고 조사 시 “누가 언제 무엇을 했는지”를 확인할 수 있습니다.
컨테이너 보안
- Docker 이미지가 비루트 사용자로 실행됩니다.
- 구성 파일 및 SSH 키를 읽기 전용 볼륨으로 마운트합니다.
- 리소스 제한(CPU, 메모리)을 적용합니다.
네트워크 격리
- TLS 종료 리버스 프록시 뒤에 배포합니다.
- 방화벽 규칙 또는 VPN을 통해 접근을 제한합니다.
Do NOT 브리지를 API‑키 인증만으로 공개 인터넷에 직접 노출하지 마십시오.
시작하기
1. 복제 및 파이썬 환경 설정
git clone https://github.com/shashikanth-gs/mcp-ssh-bridge.git
cd ssh-mcp-bridge
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
2. 설정 파일 (config.yaml) 만들기
server:
enable_stdio: true
log_level: "INFO"
hosts:
- name: my-server
description: "Development server"
host: "your-server.com"
username: "your-user"
private_key_path: "~/.ssh/id_rsa"
execution_mode: "shell" # or "exec"
session:
idle_timeout: 30 # minutes
3. Claude Desktop(또는 다른 MCP 클라이언트)에 브리지 추가
{
"mcpServers": {
"ssh-bridge": {
"command": "/path/to/venv/bin/python",
"args": ["-m", "ssh_mcp_bridge", "/path/to/config.yaml"]
}
}
}
Claude Desktop을 재시작하고 SSH 호스트 목록을 요청하세요. 모든 것이 올바르면 서버가 UI에 표시됩니다.
4. (선택) Docker 배포
컨테이너 실행을 선호하는 사용자를 위해 저장소에 docker-compose.yml 예제가 제공됩니다.
왜 오픈소스인가?
- 개인적인 필요 – AI 지원을 받아 내 인프라를 관리하기 위해 직접 만들었습니다.
- 생태계 격차 – 대부분의 MCP 예제는 간단한 파일 리더나 웹 스크래퍼에 불과합니다; 인프라 관리가 더 어렵지만 높은 효율을 제공합니다.
- 커뮤니티 피드백 – 기여와 아이디어를 기다리고 있습니다.
예정 기능 (PR 환영)
- SCP/SFTP 파일 전송
- 베스천(점프‑호스트) 지원
- 서버 상태를 노출하는 MCP 리소스
마무리
AI‑지원 인프라 관리가 준비가 되었든 안 되었든 다가오고 있습니다. 핵심은 이를 안전하게 그리고 감사 가능하게 수행하는 것입니다.
SSH MCP Bridge는 이러한 균형을 맞추기 위한 저의 시도입니다. 모든 사용 사례에 맞지는 않을 수 있지만, 보안을 해치지 않으면서 AI가 서버 관리를 도와줄 방법이 필요하다면 한 번 사용해 보세요.
- Repository:
- Docker images: Docker Hub에 있음 (repo README 참고)
AI와 인프라에 관한 질문, 피드백, 혹은 전쟁 이야기가 있나요? 여러분의 이야기를 듣고 싶습니다.