Linux远程命令执行服务

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

  • by fahadkhan91
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 fahadkhan91/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_USERNAMESSH连接的用户名

认证(选择一项)

  • LINUX_SSH_KEY_PATH您的SSH私钥文件路径(推荐)
  • LINUX_PASSWORDSSH 密码(安全性较低)

可选变量

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

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. 获取系统信息

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

示例用法: 无需参数。

3. 列出目录

列出目录内容。

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

示例:

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

4. 文件操作(file_operations)

执行文件读/写操作。

  • 参数:
    • 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(适当设置sudo权限)

示例 .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服务器现已配置为提供最高级别的安全保护。当服务器重启时,它将加载这些新设置并强制执行最严格的安全协议。