SSH服务器管理工具

一个通过Claude Desktop提供SSH访问Unix/Linux服务器的模型上下文协议(MCP)服务器,支持执行命令、管理文件和监控远程服务器。

  • by paraporoco
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 paraporoco/SSH-MCP

使用说明

SSH MCP 服务器

一个模型上下文协议(MCP)服务器,通过Claude Desktop提供对Unix/Linux服务器的SSH访问。使用自然语言执行命令、管理文件并监控您的远程服务器!

特点/特性

  • 🔌(电源插头/插座) 直接SSH访问 - 从Claude桌面执行远程服务器上的命令
  • 📁 文件夹 文件管理 - 上传、下载和浏览文件
  • 📊(表格/数据图表) 系统监控 - 获取实时系统信息(CPU、内存、磁盘、温度)
  • 🔄 翻译为中文是:循环/重复 流程管理 - 检查正在运行的进程
  • 📝 多命令脚本 - 按顺序执行多个命令
  • 🔐(锁形符号,常用于表示安全、保密或需要密码的含义) 安全的 - 使用SSH密钥认证

先决条件

  • Python 3.8或更高版本
  • Claude Desktop(可译为“Claude桌面版”)
  • 启用了SSH的远程Unix/Linux服务器
  • 用于认证的SSH密钥对

安装

1. 克隆仓库

git clone https://github.com/paraporoco/SSH-MCP.git
cd SSH-MCP

2. 配置您的连接

复制示例配置文件:

# Windows PowerShell
Copy-Item config.example.json config.json

# Linux/Mac
cp config.example.json config.json

编辑 config.json 附上您的服务器详细信息:

{
  "ssh": {
    "host": "YOUR_SERVER_IP",
    "port": 22,
    "user": "YOUR_SSH_USERNAME",
    "key_path": "PATH_TO_YOUR_SSH_KEY"
  },
  "connection": {
    "timeout": 30,
    "default_command_timeout": 30
  }
}

示例:

{
  "ssh": {
    "host": "192.168.1.100",
    "port": 22,
    "user": "username",
    "key_path": "C:\\Users\\YourName\\.ssh\\id_rsa"
  },
  "connection": {
    "timeout": 30,
    "default_command_timeout": 30
  }
}

3. 运行安装脚本

Windows(PowerShell)

.\setup.ps1

Linux/苹果系统

python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

4. 配置Claude桌面版

将MCP服务器添加到您的Claude Desktop配置中:

配置文件位置:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

添加此配置:

{
  "mcpServers": {
    "ssh-server": {
      "command": "/FULL/PATH/TO/SSH-MCP/venv/Scripts/python.exe",
      "args": [
        "/FULL/PATH/TO/SSH-MCP/ssh_mcp_server.py"
      ]
    }
  }
}

Windows 示例:

{
  "mcpServers": {
    "ssh-server": {
      "command": "C:\\Users\\YourName\\Projects\\SSH-MCP\\venv\\Scripts\\python.exe",
      "args": [
        "C:\\Users\\YourName\\Projects\\SSH-MCP\\ssh_mcp_server.py"
      ]
    }
  }
}

macOS/Linux 示例:

{
  "mcpServers": {
    "ssh-server": {
      "command": "/home/username/SSH-MCP/venv/bin/python",
      "args": [
        "/home/username/SSH-MCP/ssh_mcp_server.py"
      ]
    }
  }
}

5. 重启Claude桌面应用

完全退出并重新启动 Claude Desktop 以加载 MCP 服务器。

SSH密钥设置

如果你没有SSH密钥对,请创建一个:

在 Windows(PowerShell)上:

ssh-keygen -t rsa -b 4096 -f $env:USERPROFILE\.ssh\id_rsa

在Linux/Mac上:

ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa

然后将你的公钥复制到远程服务器:

ssh-copy-id -i ~/.ssh/id_rsa.pub username@server-ip

或者手动将公钥附加到 ~/.ssh/authorized_keys 在你的远程服务器上。

可用工具

配置完成后,您可以通过自然语言在Claude桌面版中使用这些工具:

1. ssh测试连接

测试与远程服务器的SSH连接。

示例: “测试我的服务器连接”

2. ssh_execute 翻译为中文是“通过SSH执行(命令/操作)”

在您的远程服务器上执行单个命令。

示例:

  • “在我的服务器上运行‘ls -la’命令”
  • “检查我服务器上的磁盘空间”
  • “显示内核版本”

3. ssh执行脚本

按顺序执行多个命令。

示例: 在我的服务器上运行以下命令:cd /home/user,ls -la,pwd

4. ssh系统信息

获取全面的系统信息(操作系统、CPU、内存、磁盘、温度)。

示例: “显示我的服务器系统信息”

5. ssh_list_files 翻译成中文是“通过SSH列出文件”

列出目录中的文件。

示例:

  • “列出/home/user目录中的文件”
  • “给我看看/var/log里有什么”

6. ssh_read_file 翻译为中文是“通过SSH读取文件”

读取文件的内容。

示例: “从我的服务器读取/etc/hostname文件”

7. ssh检查进程

检查某个进程是否正在运行。

示例: “我的服务器上运行着 Nginx 吗?”

8. 通过SSH上传文件

将文件从您的电脑上传到远程服务器。

示例: “将C:\myfile.txt上传到/home/user/myfile.txt”

9. 通过SSH下载文件

从远程服务器下载文件到您的电脑。

示例: “将/var/log/syslog下载到C:\logs\syslog.txt”

使用示例

以下是在Claude Desktop中可以使用的自然语言提示:

系统监控:

  • “服务器CPU的温度是多少?”
  • “正在使用多少内存(RAM)?”
  • “显示磁盘使用情况”
  • “系统正常运行时间是多少?”

文件操作:

  • “列出 /home/user/projects 目录下的所有 Python 文件”
  • “读取位于 /etc/nginx/nginx.conf 的配置文件”
  • “将这个脚本上传到我的服务器”

流程管理:

  • “Docker正在运行吗?”
  • “显示所有Python进程”
  • “检查Apache是否正在运行”

命令执行:

  • "使用 apt update 更新软件包列表"
  • “重启nginx服务”
  • “创建一个名为 /home/user/backup 的目录”

配置选项

环境变量(config.json 的替代方案)

而不是使用 config.json,你可以设置环境变量:

  • SSH_HOST - 远程服务器IP地址
  • SSH_USER - SSH 用户名
  • SSH_KEY_PATH - SSH私钥的路径
  • SSH_PORT - SSH端口(默认:22)
  • SSH_TIMEOUT - 连接超时时间(以秒为单位)(默认:30)
  • SSH_COMMAND_TIMEOUT - 命令执行超时(默认:30)

故障排除

连接问题

  1. 验证服务器是否可达:

    ping YOUR_SERVER_IP
    
  2. 手动测试SSH:

    ssh -i /path/to/key username@server-ip
    
  3. 检查服务器上的SSH服务:

    sudo systemctl status ssh
    
  4. 验证SSH密钥权限:

    • 私钥应仅对您可读(chmod 600)
    • 公钥应为 ~/.ssh/authorized_keys 在服务器上

MCP服务器未加载

  1. 验证Python安装:

    python --version  # Should be 3.8+
    
  2. 检查虚拟环境:

    # Activate venv and test
    venv/Scripts/python.exe ssh_mcp_server.py  # Windows
    venv/bin/python ssh_mcp_server.py  # Linux/Mac
    
  3. 检查Claude Desktop日志:

    • 在Claude Desktop控制台中查找错误信息
    • 验证路径中的 claude_desktop_config.json 是绝对的
  4. 完全重启Claude桌面版:

    • 关闭所有实例
    • 检查系统托盘中的隐藏实例
    • 重启并等待10-15秒以让MCP服务器初始化

权限被拒绝错误

  • 确保你的SSH密钥具有正确的权限
  • 验证用户在远程服务器上拥有必要的权限
  • 检查SSH密钥是否未设置密码保护(或使用ssh-agent)

安全考虑事项

  • ⚠️(警告/注意) 永远不要承诺 config.json 或使用SSH密钥进行版本控制
  • 使用SSH密钥认证代替密码
  • 限制SSH密钥的权限(chmod 600)
  • 考虑使用具有有限权限的专用SSH用户
  • 确保您的SSH密钥安全,并定期更换
  • 使用防火墙规则限制SSH访问

发展

运行测试

# Activate virtual environment
# Windows
.\venv\Scripts\activate

# Linux/Mac
source venv/bin/activate

# Run test connection
python test_connection.py

项目结构

SSH-MCP/
├── ssh_mcp_server.py       # Main MCP server
├── config.example.json     # Configuration template
├── config.json             # Your config (gitignored)
├── requirements.txt        # Python dependencies
├── setup.ps1              # Windows setup script
├── test_connection.ps1    # Windows test script
├── .gitignore            # Git ignore rules
└── README.md             # This file

贡献;做出贡献

欢迎贡献!请随时提交拉取请求。

  1. 为仓库创建分支(或“克隆仓库”)
  2. 创建你的特性分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add amazing feature')
  4. 推送到分支(git push origin feature/amazing-feature)
  5. 提交一个拉取请求

许可证

MIT 许可证 - 请参阅 许可证 文件详情见附件

致谢

支持

对于问题、疑问或贡献:

  • 在GitHub上提交一个问题
  • 检查现有问题以寻找解决方案
  • 参考 MCP文档

注: 这个项目并非正式隶属于Anthropic或Claude Desktop。