SSH服务器管理工具

SSH MCP Server是一个通过SSH协议管理Linux服务器的工具,提供远程命令执行、文件管理、服务监控和日志分析等功能。

  • by giuliolibrando
  • Python
  • 本地部署
  • 7 星标
  • 更新于
在 GitHub 查看 giuliolibrando/ssh-mcp-server

使用说明

SSH MCP服务器

用于通过SSH管理Linux服务器的模型上下文协议(MCP)服务器。此服务器提供用于在远程Linux系统上执行命令、管理文件、监视服务和分析日志的工具。

安装

Docker(推荐)

  1. 复制环境文件并配置SSH凭据:
cp env.example .env
# Edit .env with your SSH server details
  1. 使用Docker Compose构建和运行:
docker compose up -d

手动安装

  1. 安装依赖项:
pip install -r requirements.txt
  1. 设置环境变量:
export SSH_HOST=your-server.example.com
export SSH_USER=root
export SSH_PASSWORD=your_password
# OR
export SSH_KEY_FILE=/path/to/private/key
  1. 运行服务器:
python -m ssh_mcp_server.server

任何LLM集成

将以下配置添加到您的 anythingllm_mcp_servers.json:

{
  "mcpServers": {
    "ssh-mcp-server": {
      "name": "SSH MCP Server",
      "type": "streamable",
      "url": "http://ssh-mcp-server:8000/mcp",
      "auth_token": null,
      "enabled": true
    }
  }
}

配置

环境变量

变量 描述 默认值
SSH_HOST 目标服务器主机名或IP localhost
SSH_USER SSH用户名 root
SSH_PASSWORD SSH密码 -
SSH_KEY_FILE SSH私钥的路径 -
SSH_PORT SSH端口 22
SERVER_HOST MCP服务器绑定地址 0.0.0.0
SERVER_PORT MCP服务器端口 8000

认证

服务器支持两种身份验证方法:

  1. 密码验证:设置 SSH_PASSWORD 在您的环境中
  2. 基于密钥的身份验证:设置 SSH_KEY_FILE 转到私钥的路径

用法

基本连接测试

# Test SSH connection
test_ssh_connection(
    hostname="server.example.com",
    username="root",
    password="your_password"
)

执行命令

# Execute a simple command
execute_command("ls -la /var/log")

# Execute with sudo
execute_command("systemctl status nginx", use_sudo=True)

文件操作

# Read a file
read_file("/etc/nginx/nginx.conf")

# Write to a file
write_file("/tmp/test.txt", "Hello World!")

# List directory contents
list_directory("/var/log")

服务管理

# Check service status
get_service_status("nginx")

# Start a service
start_service("nginx")

# Stop a service
stop_service("nginx")

# Restart a service
restart_service("nginx")

进程管理

# List all processes
list_processes()

# List specific processes
list_processes(filter_by="nginx")

# Kill a process
kill_process("12345", signal="TERM")

网络工具

# Check if port is open
check_port(80)

# Get network connections
get_network_connections()

日志分析

# Tail a log file
tail_log("/var/log/nginx/access.log", lines=100)

# Search in logs
search_log("/var/log/nginx/error.log", "error")

安全考虑

  • 尽可能使用基于SSH密钥的身份验证
  • 限制SSH访问特定用户和IP
  • 定期轮换SSH密钥和密码
  • 监控SSH访问日志
  • 谨慎使用sudo并限制sudo权限

故障排除

连接问题

  1. 认证失败:检查用户名、密码或密钥文件
  2. 连接被拒绝:验证SSH服务是否正在运行以及端口是否正确
  3. 主机密钥验证:确保服务器的主机密钥受信任

权限问题

  1. 文件访问被拒绝:检查文件权限和所有权
  2. Sudo必填:使用 use_sudo=True 用于特权操作
  3. 服务管理:确保用户具有适当的systemd权限

性能问题

  1. 慢速命令:增加长时间运行的命令的超时值
  2. 连接超时:检查网络连接和服务器负载
  3. 资源使用情况:在操作期间监视服务器资源

API 参考

服务器公开了以下MCP工具:

  • test_ssh_connection:测试SSH连接
  • get_server_info:获取系统信息
  • execute_command:执行命令
  • read_file:读取文件内容
  • write_file:写入文件内容
  • list_directory:列出目录内容
  • get_service_status:检查服务状态
  • start_service:启动服务
  • stop_service:停止服务
  • restart_service:重新启动服务
  • list_processes:列出正在运行的进程
  • kill_process:终止进程
  • check_port:检查端口状态
  • get_network_connections:获取网络连接
  • tail_log:尾部日志文件
  • search_log:搜索日志文件

许可证

该项目根据MIT许可证获得许可。