SSH MCP 도구
ISC License
Node.js
TypeScript
SSH
English Version (README-EN.md)
이것은 무엇인가요
이것은 MCP (Model Context Protocol) 기반의 SSH 도구로, AI 모델이 표준화된 인터페이스를 통해 SSH 연결에 접근하고 관리할 수 있게 합니다.
간단히 말해, AI 비서가 사용자가 복잡한 명령을 수동으로 입력하거나 터미널로 전환할 필요 없이 서버 연결, 명령어 실행, 파일 관리 등 다양한 SSH 작업을 수행할 수 있도록 합니다.
<details>
<summary><b id="功能特点">지원 기능</b> (클릭하여 펼치기)</summary>
- 연결 관리: SSH 연결 생성, 가져오기, 목록 보기, 업데이트, 삭제
- 명령어 실행: 단일 명령어, 복합 명령어, 백그라운드 작업 실행
- tmux 세션 관리: 세션 생성, 가져오기, 목록 보기, 키 입력 전송, 출력 캡처
- 파일 조작: 파일 업로드, 다운로드, 내용 확인
- 프로세스 관리: 블로킹 프로세스 감지, 지능형 대기, 시간 초과 처리
- 보안 제어: 비밀번호/키 인증, 시간 초과 제어, 오류 처리
</details>
<details>
<summary><b id="功能特点">기능 특징</b> (클릭하여 펼치기)</summary>
다음은 SSH MCP 도구의 몇 가지 핵심 특징입니다:
- 지능형 명령어 실행: 블로킹 프로세스를 자동으로 감지하고 대기하여 세션이 멈추는 것을 방지합니다.
- tmux 통합: tmux 세션 관리를 완벽하게 지원하여 영속적인 터미널 세션을 구현합니다.
- 복합 명령어 지원:
&&와 ;를 포함하는 복합 명령어를 지능적으로 처리합니다.
- 실시간 피드백: 명령어 실행 상태가 실시간으로 업데이트되며, 장시간 실행되는 작업도 지원합니다.
- 오류 복구: 연결 끊김 재연결, 시간 초과 등 예외 상황을 자동으로 처리합니다.
- 안전하고 신뢰성 높음: 다양한 인증 방식을 지원하여 민감한 정보를 보호합니다.
단순한 자연어 지시를 통해 AI가 위에서 언급된 모든 작업을 수동으로 복잡한 SSH 명령어를 작성하거나 터미널에서 실행할 필요 없이 도와줄 수 있습니다.
</details>
빠른 시작하기
0. 환경 준비
<details>
<summary>환경 요구 사항 (클릭하여 펼치기)</summary>
- Python 3.11 이상 (필수)
- Python 공식 웹사이트에 접속합니다.
- Python 3.11 또는 그 이상의 버전을 다운로드 및 설치합니다.
- 중요: 설치 시
⚠️ 주의:
당신의 사용자 이름을 Windows 사용자 이름으로 대체하세요.
- 경로가 클론하거나 압축 해제한 프로젝트 디렉터리를 정확히 가리키는지 확인하세요.
- 경로는 프로젝트 파일을 실제로 배치한 위치를 반영해야 합니다.
- 클론 또는 압축 해제한 폴더를 삭제하지 마세요. 이렇게 하면 MCP가 정상적으로 작동하지 않습니다.
</details>
<details>
<summary><b>macOS 설정</b> (클릭하여 펼치기)</summary>
-
Cursor에서 MCP 설정 파일을 열거나 생성합니다: /Users/당신의 사용자 이름/.cursor/mcp.json
- 주의:
당신의 사용자 이름을 macOS 사용자 이름으로 대체하세요.
-
다음처럼 설정을 추가하거나 수정합니다:
{
"mcpServers": {
"ssh-mcp": {
...
⚠️ 주의:
당신의 사용자 이름을 macOS 사용자 이름으로 대체하세요.
- 경로가 클론하거나 압축 해제한 프로젝트 디렉터리를 정확히 가리키는지 확인하세요.
- 경로는 프로젝트 파일을 실제로 배치한 위치를 반영해야 합니다.
- 클론 또는 압축 해제한 폴더를 삭제하지 마세요. 이렇게 하면 MCP가 정상적으로 작동하지 않습니다.
</details>
<details>
<summary><b>Linux 설정</b> (클릭하여 펼치기)</summary>
-
Cursor에서 MCP 설정 파일을 열거나 생성합니다: /home/당신의 사용자 이름/.cursor/mcp.json
- 주의:
당신의 사용자 이름을 Linux 사용자 이름으로 대체하세요.
-
다음처럼 설정을 추가하거나 수정합니다:
{
"mcpServers": {
"ssh-mcp": {
...
⚠️ 주의:
당신의 사용자 이름을 Linux 사용자 이름으로 대체하세요.
- 경로가 클론하거나 압축 해제한 프로젝트 디렉터리를 정확히 가리키는지 확인하세요.
- 경로는 프로젝트 파일을 실제로 배치한 위치를 반영해야 합니다.
- 클론 또는 압축 해제한 폴더를 삭제하지 마세요. 이렇게 하면 MCP가 정상적으로 작동하지 않습니다.
</details>
4. 서비스 시작
설정을 완료한 후, Cursor 편집기를 재시작하면 MCP 서비스가 자동으로 시작됩니다. 그러면 바로 사용을 시작할 수 있습니다.
5. SSH 연결 설정
<details>
<summary><b>SSH 연결 설정 방법</b> (클릭하여 펼치기)</summary>
- Cursor 편집기에서 AI 도우미를 사용하여 새로운 SSH 연결을 생성합니다:
요청: 제 서버에 연결하는 새로운 SSH 연결을 만들어 주세요
2. AI 도우미가 다음 정보를 제공하도록 안내할 것입니다:
- 호스트 주소 (IP 또는 도메인)
- 포트 번호 (기본값 22)
- 사용자 이름
- 인증 방식 (비밀번호 또는 키)
- 기타 선택적 설정 (타임아웃 시간, 키 경로 등)
3. 연결 생성 후, 다음 명령을 통해 연결 테스트를 할 수 있습니다:
요청: 방금 만든 SSH 연결을 테스트해 주세요
</details>
## 사용 예시
<details>
<summary><b>기본 명령어 실행</b> (클릭하여 펼치기)</summary>
서버에서 ls -la 명령을 실행해 주세요
AI 도우미는 다음 작업을 수행합니다:
1. 기존 SSH 연결 확인
2. 명령을 실행하고 결과를 반환
3. 가독성을 높이기 위해 출력 형식화
</details>
<details>
<summary><b>tmux 세션 관리</b> (클릭하여 펼치기)</summary>
요청: 새로운 tmux 세션을 만들고 top 명령을 실행해 주세요
AI 도우미는 다음 작업을 수행합니다:
1. 새로운 tmux 세션 생성
2. 세션 내에서 top 명령 실행
3. 후속 사용을 위해 세션 ID 반환
</details>
<details>
<summary><b>파일 조작</b> (클릭하여 펼치기)</summary>
요청: /var/log/syslog 파일의 마지막 100 줄을 확인해 주세요
AI 도우미는 다음 작업을 수행합니다:
1. 파일 권한 확인
2. 적절한 명령을 사용하여 파일 읽기
3. 내용 형식화 및 반환
</details>
## 고급 기능
### 블로킹 감지 (Blocking Detection)
SSH MCP 도구는 지능적인 블로킹 감지 메커니즘을 내장하고 있습니다:
- 대화형 프로그램(예: vim, nano) 자동 감지
- 백그라운드에서 실행되는 블로킹 프로세스 식별
- 대기 타임아웃 시간 설정 지원 (최대 10분)
- 강제 실행 옵션 제공 (force 매개변수 사용)
### 복합 명령어 처리 (Composite Command Handling)
`&&`와 `;`를 포함하는 복합 명령 실행을 지원합니다:
- 여러 명령을 지능적으로 분리 및 실행
- 명령 실행 순서 유지
- 상세한 실행 상태 제공
- 오류 처리 및 롤백(rollback) 지원
### tmux 통합
완벽한 tmux 세션 관리 지원:
- 영속적인(persistent) 세션 생성 및 관리
- 키 입력 시퀀스 전송 지원
- 실시간 세션 출력 캡처
- 지능적인 세션 상태 처리
## 향상된 프롬프트 설정
SSH MCP 도구를 사용하여 원격 서버와 더 잘 협업하기 위해, Cursor에 다음 CursorRules 설정을 추가하는 것이 좋습니다:
<details>
<summary><b>권장되는 CursorRules 설정</b></summary>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
사용자 도움이 필요하거나 필요할 수 있는 ssh 작업의 경우, 공유 가능한 터미널 세션인 tmux를 생성하고, 사용자에게 어떤 명령을 통해 tmux에 연결하여 협업할 수 있는지 직접 <b>알려주세요</b>(mcp 내에서 사용자에게 알려주는 것이 아니라, 출력으로 보여줘야 합니다). 그런 다음 작업을 시작하세요.
<b>반드시 tmux 내부에서 작업을 수행해야 합니다. tmux send-keys 관련 명령을 사용할 수 있으며, mcp는 자동으로 현재 실행 중인 명령어와 직전에 실행된 명령어의 결과를 반환합니다.</b>
...
</details>
이 설정을 추가하면 AI 어시스턴트가 SSH 작업을 더 지능적으로 처리할 수 있게 되며, 특히 사용자 협업이 필요한 시나리오에서 공유 tmux 세션을 생성하여 원격 조작을 더욱 효율적이고 투명하게 만들 수 있습니다.
## 작동 원리
<details>
<summary>기술 구현 상세 (클릭하여 펼치기)</summary>
본 도구는 **MCP (Model Context Protocol)** 표준을 기반으로 구현되었으며, AI 모델과 SSH 서비스 간의 다리 역할을 합니다. 이는 **node-ssh**를 기본 SSH 클라이언트로 사용하고, **Zod**를 통해 요청 검증 및 타입 체크를 수행합니다.
주요 기술 구성 요소는 다음과 같습니다:
- **SSH 클라이언트**: SSH 연결을 설정하고 유지하며, 비밀번호 및 키 인증을 지원합니다.
- **tmux 관리자**: tmux 세션의 생성, 관리 및 상호 작용을 처리합니다.
- **명령 실행 시스템**: 단일 명령어 및 복합 명령어 실행을 지원하며, 블로킹 감지 기능을 제공합니다.
- **프로세스 모니터링**: 프로세스 상태를 실시간으로 감지하여 세션이 멈추는 것을 방지합니다.
- **파일 전송**: 업로드 및 다운로드 기능을 지원하며, 다양한 파일 형식을 처리합니다.
모든 SSH 작업은 표준화된 MCP 도구로 캡슐화되어 구조화된 매개변수를 받고 형식화된 결과를 반환합니다. 모든 원격 명령어는 처리되어 인간이 읽을 수 있는 형식으로 보장되며, AI 모델이 명령어 실행 결과를 쉽게 이해할 수 있도록 합니다.
</details>
## 기여 가이드
Issue와 Pull Request를 제출해 주시면 환영합니다! 제출하기 전에 다음 사항을 확인해 주세요:
1. 기존 Issue 및 PR 검토
2. 프로젝트의 코드 스타일 준수
3. 적절한 테스트 케이스 추가
4. 관련 문서 업데이트
## 라이선스
본 프로젝트는 ISC 라이선스를 채택했습니다 - 자세한 내용은 [LICENSE](LICENSE) 파일을 참조하세요.
---
이 프로젝트가 도움이 되었다면, Star ⭐️ (。♥‿♥。) 를 부탁드립니다.
## Docker로 실행하기 (권장)
이 도구를 Docker 컨테이너에서 실행할 수도 있습니다. 이는 로컬 환경과 잠재적인 충돌을 피할 수 있어 권장되는 사용 방식입니다.
1. **Docker 이미지 빌드:**
```bash
docker build -t mcp-ssh .
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
- Docker 컨테이너 실행 (데이터 영속화 포함):
연결 구성 및 자격 증명이 컨테이너 재시작 후에도 손실되지 않도록, Docker 볼륨(Volume) 사용을 강력히 권장합니다.
docker volume create mcp-ssh-data
...
Windows에서는 ~/.ssh 대신 %USERPROFILE%\.ssh를 사용하세요:
docker run -it -v mcp-ssh-data:/root/.mcp-ssh -v %USERPROFILE%\.ssh:/root/.ssh mcp-ssh