Linux远程命令执行服务

一个通过SSH安全执行远程Linux命令的服务,支持系统信息收集、文件操作和连接管理。

  • by JNPRAutomate
  • Python
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 JNPRAutomate/linux-mcp-server

使用说明

Linux MCP服务器安装指南

此MCP服务器允许您通过SSH在远程主机上安全地执行Linux命令。

特性

  • 执行任意Linux命令 在远程主机上
  • 系统信息收集 (主机名、操作系统、内存、磁盘使用情况等)
  • 目录列表 具有详细的选项
  • 文件 操作 (读、写、追加)
  • 安全认证 通过SSH密钥或密码
  • 基于环境的配置 获取凭据
  • 连接管理 自动重新连接

安装

  1. 安装依赖项:
pip install -r requirements.txt
  1. 创建环境文件:
cp .env.example .env
  1. 编辑 .env 使用您的凭据:
# Required settings
LINUX_HOST=your-server-ip
LINUX_USERNAME=your-username

# Authentication: Use either password OR SSH key (SSH key is recommended)
# Option 1: Password authentication
LINUX_PASSWORD=your_password

# Option 2: SSH key authentication (recommended)
LINUX_SSH_KEY_PATH=/path/to/your/private/key

# Optional: Connection timeout in seconds
LINUX_TIMEOUT=30

# Optional: Logging level (DEBUG, INFO, WARNING, ERROR)
LOG_LEVEL=INFO

# Enable/disable warnings (default: true)
LINUX_ENABLE_WARNINGS=true

# Block critical commands entirely (default: false)  
LINUX_BLOCK_CRITICAL=false

# Requires confirmation for high/critical commands (default: true)
# Disables confirmation requirement (only shows warnings) if false
LINUX_REQUIRE_CONFIRMATION=true

配置选项

必需变量

  • LINUX_HOST:目标Linux系统的IP地址或主机名
  • LINUX_USERNAME:SSH连接的用户名

身份验证(选择一个)

  • LINUX_SSH_KEY_PATH:SSH私钥文件的路径(推荐)
  • LINUX_PASSWORD:SSH密码(不太安全)

可选变量

  • LINUX_PORT:SSH端口(默认值:22)
  • LINUX_TIMEOUT:连接超时(秒)(默认值:30)
  • LOG_LEVEL:日志记录级别(默认值:INFO)
  • LINUX_ENABLE_WARNINGS:启用/禁用警告(默认值:true)
  • LINUX_BLOCK_CRITICAL:完全阻止关键命令(默认值:false)
  • LINUX_REQUIRE_CONFIRMATION:需要确认高/关键命令(默认值:true)。否则,禁用确认要求(仅显示警告)-⚠️⚠️⚠️ 危险!!! ⚠️⚠️⚠️

重要配置通知

警告: Linux MCP服务器支持配置更改和潜在的关键命令执行,但请确保仅当您希望加载LLM生成的配置和/或在Linux服务器上执行潜在的关键指令时才使用此功能。

始终检查LLM正在生成的配置或正在执行的命令 并且只有当工具的配置/执行符合您的用例时,才允许执行。

SSH密钥设置(推荐)

  1. 生成SSH密钥对(如果没有):
ssh-keygen -t rsa -b 4096 -f ~/.ssh/linux_mcp_key
  1. 将公钥复制到目标主机:
ssh-copy-id -i ~/.ssh/linux_mcp_key.pub username@your-server-ip
  1. 在.env中设置密钥路径:
LINUX_SSH_KEY_PATH=/home/user/.ssh/linux_mcp_key

运行服务器

直接使用您的系统python:

python linux_mcp_server.py

直接在虚拟环境中使用python uv:

uv run python linux_mcp_server.py

可用工具

1.执行命令

在远程主机上执行任何Linux命令。

  • 参数:
    • command (必填):要执行的Linux命令
    • timeout (可选):命令超时(秒)

例子:

{
  "command": "ps aux | grep python",
  "timeout": 60
}

2.get_system_info

获取全面的系统信息,包括主机名、操作系统、内存、磁盘使用情况和CPU信息。

示例用法: 无需参数。

3.列表目录

列出目录的内容。

  • 参数:
    • path (可选):目录路径(默认:当前目录)
    • detailed (可选):显示包含权限、大小等的详细列表。

例子:

{
  "path": "/var/log",
  "detailed": true
}

4.文件操作

执行文件读/写操作。

  • 参数:
    • operation (必填):“读取”、“写入”或“附加”
    • file_path (必填):文件路径
    • content (写入/附加时需要):要写入/附加的内容

例子:

{
  "operation": "write",
  "file_path": "/tmp/test.txt",
  "content": "Hello, World!"
}

安全注意事项

  1. 使用SSH密钥而不是密码 尽可能
  2. 限制用户权限 在目标主机上
  3. 使用专用用户 用于MCP操作
  4. 确保.env文件的安全 永远不要将其提交给版本控制
  5. 考虑防火墙规则 限制SSH访问
  6. 定期按键轮换 增强安全性

故障排除

连接问题

  • 验证主机IP和端口是否正确
  • 检查SSH服务是否在目标主机上运行
  • 确保防火墙允许SSH连接
  • 验证SSH密钥权限(应为600)

身份验证问题

  • 检查用户名是否正确
  • 对于SSH密钥:确保公钥在 ~/.ssh/authorized_keys 在目标主机上
  • 对于密码:验证密码是否正确,帐户是否未锁定

权限问题

  • 确保用户对您尝试执行的命令具有必要的权限
  • 考虑使用 sudo 如果需要,在命令中(适当配置sudoers)

示例.env文件

# Production server
LINUX_HOST=192.168.1.100
LINUX_PORT=22
LINUX_USERNAME=mcpuser
LINUX_SSH_KEY_PATH=/home/user/.ssh/production_key
LINUX_TIMEOUT=30
LOG_LEVEL=INFO
LINUX_ENABLE_WARNINGS=true
LINUX_BLOCK_CRITICAL=true
LINUX_REQUIRE_CONFIRMATION=true

与MCP客户端集成

此服务器遵循MCP(模型上下文协议)规范,可以与任何兼容MCP的客户端集成。服务器通过stdio进行通信,并提供客户端可以发现和使用的结构化工具定义。

安全

已成功进行最大安全配置。Linux MCP服务器配置了最大安全设置:

Configuration Applied:
Environment Variables Set:

LINUX_ENABLE_WARNINGS=true          # Show all warnings
LINUX_BLOCK_CRITICAL=true           # Block critical commands entirely  
LINUX_REQUIRE_CONFIRMATION=true     # Require confirmation for dangerous commands

安全行为现已激活:

🛡️ 关键命令(rm-rf/,dd of=/dev/等)**

完全阻止-即使确认也无法执行 将显示解释该块的错误消息

⚠️ 高风险命令(关机、重启、终止等)

需要确认-必须先询问用户,然后使用confirm_dangerous=true重新运行 显示有关风险的详细警告

⚡ 中等风险命令(chmod、docker等)

显示警告-执行时显示安全警告

✅ 安全命令

正常执行,无警告

这意味着:

在运行关闭、重启、终止等危险命令之前,我总是会要求确认。 关键命令将被完全阻止-像rm-rf/、dd of=/dev/sda、mkfs这样的命令根本无法执行 所有警告均已启用-您将看到任何潜在危险操作的详细风险分析 该系统现在得到了最大程度的保护,同时仍然可以进行合法操作

Linux MCP服务器现在配置了最高级别的安全保护。当服务器重新启动时,它将加载这些新设置并强制执行最大安全协议。