GitHub
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
제작자가 쓴 설명(영어 원문)
SSH Model Context Protocol Server - Enable SSH functionality for AI models
이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.
이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.
쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.
SSH_HOST, SSH_USER, SSH_PASSWORD, SSH_PORT비밀로 표시된 값은 내 계정의 열쇠예요. 절대 다른 사람과 공유하거나 채팅에 붙여 넣지 마세요.
필요한 것
어떤 앱을 쓰세요?
위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.
Claude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요
{
"mcpServers": {
"ssh-licco": {
"command": "uvx",
"args": [
"ssh-licco"
],
"env": {
"SSH_HOST": "your-value",
"SSH_USER": "your-value",
"SSH_PASSWORD": "your-value",
"SSH_PORT": "your-value"
}
}
}
}터미널에서 이 명령어를 실행하세요
claude mcp add ssh-licco --env SSH_HOST=your-value --env SSH_USER=your-value --env SSH_PASSWORD=your-value --env SSH_PORT=your-value -- uvx ssh-licco실행하기 전에 빈 값을 채워 주세요.
프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요
{
"mcpServers": {
"ssh-licco": {
"command": "uvx",
"args": [
"ssh-licco"
],
"env": {
"SSH_HOST": "your-value",
"SSH_USER": "your-value",
"SSH_PASSWORD": "your-value",
"SSH_PORT": "your-value"
}
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
프로젝트의 .vscode/mcp.json에 붙여 넣으세요
{
"servers": {
"ssh-licco": {
"type": "stdio",
"command": "uvx",
"args": [
"ssh-licco"
],
"env": {
"SSH_HOST": "your-value",
"SSH_USER": "your-value",
"SSH_PASSWORD": "your-value",
"SSH_PORT": "your-value"
}
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
이 서버는 내 컴퓨터에서 실행되는데, ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.
선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.
SSH_PORT env이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.
내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.
누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 8일 점검
레지스트리 이름이 GitHub 계정 Echoqili 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요
내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요
내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요
레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.
해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.
입력해야 할 값: SSH_HOST, SSH_USER, SSH_PASSWORD
내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).
GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(2.7.3)은 27일 전 레지스트리에 올라왔어요.
Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Python (uv)도 있어야 해요.
같은 카테고리에는: GitHub, Desktop Commander, Cloudflare MCP
같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.
카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
MCP server for terminal commands, file operations, and process management
Cloudflare MCP servers
제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.
让 AI 帮你操作服务器! 通过自然语言对话,AI 可以帮你执行命令、管理文件、查看日志、部署应用等。
ssh_file_transfer delete 自动识别 Windows / Unix 路径风格并拦截敏感路径与路径遍历SSH-LICCO 基于标准 SSH/SFTP 协议,可连接以下目标主机:
| 操作系统 | 要求 | 备注 |
|---|---|---|
| Linux | OpenSSH 7.0+ | 推荐,完整支持所有功能 |
| Windows Server | OpenSSH for Windows / PowerShell Remoting over SSH | v2.1.3+ 支持 Windows 路径风格与安全校验 |
| macOS | 系统内置 OpenSSH | 完整支持 |
提示:连接 Windows 服务器时,请使用 Windows 风格路径(如
C:\temp\file.txt),系统会自动识别并进行路径安全校验。
pip install ssh-licco
git clone https://github.com/Echoqili/ssh-licco.git
cd ssh-licco pip install -e .
Python 版本要求: Python 3.10+
打开设置 → MCP → 添加新服务器:
{
"mcpServers": { "ssh": { "command": "python -m ssh_mcp.server" } } }
{
"mcpServers": { "ssh": { "command": "python -m ssh_mcp.server", "env": { "SSH_HOST": "192.168.1.100", "SSH_USER": "root", "SSH_PASSWORD": "your_password", "SSH_PORT": "22", "SSH_TIMEOUT": "60", "SSH_KEEPALIVE_INTERVAL": "30", "SSH_SESSION_TIMEOUT": "7200", "SSH_CLIENT_TYPE": "common" } } } }
环境变量说明:
SSH_HOST: SSH 服务器地址SSH_USER: 用户名SSH_PASSWORD: 密码SSH_PORT: 端口(默认 22)SSH_TIMEOUT: 连接超时(秒)SSH_KEEPALIVE_INTERVAL: 保活间隔(秒)SSH_SESSION_TIMEOUT: 会话超时(秒)SSH_CLIENT_TYPE: SSH 客户端类型(可选,默认 common)common - paramiko(稳定可靠,推荐)⭐performance - asyncssh(高性能,适合高并发)🚀development - fabric(简化 API,适合快速开发)👨💻新增加固默认值与迁移说明见 [安全边界与加固配置](docs/SECURITY.md): 连接默认验证主机密钥,确认参数不再绕过命令策略,文件传输执行目录隔离。 下表是项目的模式说明,不是第三方平台的安全评分。
重要:从 v0.2.1 开始,ssh-licco 提供多级安全策略,可根据使用场景灵活配置。
| 级别 | 名称 | 适用场景 | 防护强度 |
|---|---|---|---|
| STRICT | 严格模式 | 生产环境、公共服务器 | 最高 ⭐⭐⭐ |
| BALANCED | 平衡模式 | 开发环境、个人服务器(默认) | 高 ⭐⭐ |
| RELAXED | 宽松模式 | 测试环境、完全信任的服务器 | 中等 ⭐ |
Windows PowerShell:
$env:SSH_SECURITY_LEVEL = "balanced"
$env:SSH_EXTRA_ALLOWED_COMMANDS = "git,pip,npm"
Linux/Mac:
export SSH_SECURITY_LEVEL="balanced"
export SSH_EXTRA_ALLOWED_COMMANDS="git,pip,npm"
{
"mcpServers": { "ssh": { "command": "python -m ssh_mcp.server", "env": { "SSH_SECURITY_LEVEL": "balanced", "SSH_EXTRA_ALLOWED_COMMANDS": "git,pip,npm", "SSH_BASE_DIR": "/home" } } } }
为防止任何误操作或越权调用直接打到远程 shell,ssh-licco 在所有安全级别下都无条件拦截以下灾难性命令模式,无法通过 `confirm_dangerous=true`、`confirmation_layer=N`、调整 `SSH_SECURITY_LEVEL` 等任何方式绕过:
rm -rf 作用于绝对路径(含 /、/*、/path、/path/*,-fr 变体同效)mkfs.* 任意文件系统格式化dd if=/dev/(zero|random|urandom) of=/dev/(sd|nvme) 覆写裸盘:(){ :|:& };: 及空白变体)chmod -R 777 / / chmod -R 000 / 根目录递归改权限> /dev/(sd|nvme) / >> /dev/(sd|nvme) 裸设备重定向如确需执行上述操作,请直接通过 SSH 登录服务器(绕过 MCP 网关)进行。安全且可逆的替代方案:
# 旧做法(v2.2.0 之前):rm -rf /path/to/junk ← 现已被硬拦截
mv /path/to/junk /tmp/.trash_$(date +%s)/
命中硬拦截时会输出 WARNING 审计日志(含 category 与命令),便于 SOC 监控。
| 工具 | 描述 | 核心能力 |
|---|---|---|
ssh_connect | 连接管理 | 自动读取环境变量/配置,支持密码+密钥认证,可保存配置,登录后自动执行命令 |
ssh_execute | 命令执行 | 自动连接、智能后台检测、长任务等待、超时控制,支持 nohup/screen/tmux 三种后台模式;v2.2.0 起对灾难性命令(rm -rf 绝对路径、mkfs、raw-disk dd、fork-bomb 等)做无条件硬拦截 |
ssh_disconnect | 会话管理 | 断开指定会话 OR 列出所有活跃会话 |
ssh_file_transfer | 文件传输 | 上传/下载/列表/写入/追加/删除/创建目录/查看元信息(8 种操作);v2.1.3+ delete 操作新增 Windows/Unix 敏感路径拦截与路径遍历防护 |
ssh_host | 主机管理 | action=list/add/remove 增删查主机配置 |
ssh_docker | Docker 管理 | action=ps/images/build/logs 全生命周期管理 |
ssh_generate_key | 密钥生成 | RSA / Ed25519 密钥对 |
ssh_session | screen/tmux 会话 | 持久化远程会话管理(create/send/capture/list/kill),SSH 断开后进程依然存活 |
ssh_process | 进程管理 | 启动/停止/查询远程进程,SSH 端口转发(tunnel_open/tunnel_close/tunnel_list) |
关于 v2.1.0 引入的 3 个审批工具(
ssh_request_approval/ssh_approve_command/ssh_list_approvals):已从 MCPlist_tools()移除,代码已在 v2.2.0 删除(ssh_mcp/approval.py、ssh_mcp/handlers/approval.py)。审批流程依赖 AI 自报命令、运维侧背书,存在闭环风险;v2.2.0 的硬拦截更直接——灾难性命令在 MCP 网关层就被拒绝,运维侧不需要再走"先申请再审批"流程。
用户:帮我查看服务器上的 Docker 容器
AI:调用 ssh_connect → ssh_execute "docker ps"
[执行结果] CONTAINER ID IMAGE COMMAND STATUS PORTS abc123 nginx "nginx" Up 2 days 80:80
用户:把这个文件上传到 /var/www/html
AI:调用 ssh_connect → ssh_file_transfer
[上传成功] 本地:./index.html 远程:/var/www/html/index.html 大小:2.3 KB
用户:帮我构建 Docker 镜像
AI:调用 ssh_execute(background=True) 后台执行 docker build...
[后台任务已启动] Session ID: a1b2c3d4 命令:docker build -t myapp . 使用 ssh_execute(session_id="a1b2c3d4", command="cat /tmp/build.log") 查看进度
用户:检查 PostgreSQL 是否正常运行
AI:调用 ssh_execute "pg_isready -h localhost -p 5432"
[检查结果] localhost:5432 - accepting connections ✅ PostgreSQL 运行正常
{
"mcpServers": { "ssh": { "command": "python -m ssh_mcp.server", "env": { "SSH_SECURITY_LEVEL": "balanced", "SSH_EXTRA_ALLOWED_COMMANDS": "git,npm,docker,composer,pm2", "SSH_BASE_DIR": "/var/www", "SSH_HOST": "192.168.1.100", "SSH_USER": "deploy", "SSH_PASSWORD": "your-password" } } } }
{
"mcpServers": { "ssh": { "command": "python -m ssh_mcp.server", "env": { "SSH_SECURITY_LEVEL": "balanced", "SSH_EXTRA_ALLOWED_COMMANDS": "pip,poetry,python3,pytest,black", "SSH_HOST": "192.168.1.100", "SSH_USER": "developer", "SSH_PASSWORD": "your-password" } } } }
{
"mcpServers": { "ssh": { "command": "python -m ssh_mcp.server", "env": { "SSH_SECURITY_LEVEL": "balanced", "SSH_EXTRA_ALLOWED_COMMANDS": "psql,mysql,mongosh,pg_isready", "SSH_HOST": "192.168.1.100", "SSH_USER": "dbadmin", "SSH_PASSWORD": "your-password" } } } }
{
"mcpServers": { "ssh": { "command": "python -m ssh_mcp.server", "env": { "SSH_SECURITY_LEVEL": "relaxed", "SSH_EXTRA_ALLOWED_COMMANDS": "sudo,apt,yum,systemctl,journalctl,docker,kubectl", "SSH_HOST": "192.168.1.100", "SSH_USER": "root", "SSH_PASSWORD": "your-password" } } } }
{
"mcpServers": { "ssh": { "command": "python -m ssh_mcp.server", "env": { "SSH_SECURITY_LEVEL": "strict", "SSH_HOST": "192.168.1.100", "SSH_USER": "app-user", "SSH_PASSWORD": "your-password", "SSH_BASE_DIR": "/home/app-user" } } } }
下表所有变量均被代码读取。注意:
-
SSH_RATE_LIMIT是 bool 总开关(true/false),SSH_RATE_LIMIT_MAX才是次数上限,两者分开配置
- 主机密钥检查(strict_host_key_checking)不通过 env 配置,请用
ssh_connect工具参数或hosts.json
| 分类 | 变量 | 默认 | 说明 |
|---|---|---|---|
| 安全 | SSH_SECURITY_LEVEL | balanced | 安全级别:strict / balanced / relaxed |
SSH_BASE_DIR | /home | Unix 远程 SFTP 路径校验基目录 | |
SSH_LOCAL_BASE_DIR | 当前工作目录 | 本地文件上传源与下载目标的允许目录 | |
SSH_EXTRA_ALLOWED_COMMANDS | (空) | 额外允许的命令(逗号分隔) | |
SSH_ALLOWED_COMMANDS_FILE | (空) | 命令白名单 JSON 文件路径 | |
SSH_AUDIT_LOG_PATH | (空) | 审计日志文件路径 | |
| 限流 | SSH_RATE_LIMIT | true | 限流总开关(bool) |
SSH_RATE_LIMIT_MAX | 30 | 限流次数上限 | |
SSH_RATE_LIMIT_WINDOW | 60 | 限流窗口(秒) | |
| 硬拦截 | *(无 env)* | — | 灾难性命令硬拦截,零配置零绕过 |
| 连接默认 | SSH_HOST / SSH_PORT / SSH_USER / SSH_PASSWORD | 127.0.0.1 / 22 / root / (空) | 单 host 模式默认连接参数 |
SSH_TIMEOUT | 60 | 连接超时(秒) | |
SSH_KEEPALIVE_INTERVAL | 30 | keepalive 间隔(秒) | |
SSH_SESSION_TIMEOUT | 7200 | 会话超时(秒) | |
SSH_CLIENT_TYPE | paramiko | SSH 客户端实现:paramiko / asyncssh | |
SSH_FORCE_ENV_CONFIG | false | 强制 env 配置覆盖 hosts.json | |
SSH_SUDO_PASSWORD | (空) | sudo 密码,配合 use_sudo=true 走 sudo -S |
以下依赖版本冲突已在测试环境中验证,不影响 ssh-licco 的正常使用:
fastapi 需要 starlette<0.51.0
但安装了 starlette 0.52.1
影响范围:
解决方案:
pip install starlette==0.50.0
pyopenssl 需要 cryptography<45
但安装了 cryptography 46.0.5
影响范围:
解决方案:
pip install cryptography==44.0.0
测试通过的配置:
测试场景:
ssh-licco 的核心依赖是:
mcp - MCP 协议实现asyncssh - SSH 客户端paramiko - SSH 客户端(稳앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요