SSH服务器管理工具

一个提供SSH和串行控制台访问的服务器管理工具,支持远程服务器和网络设备的安全管理,包括文件传输、命令执行和网络诊断等功能。

  • by mixelpixx
  • TypeScript
  • 本地部署
  • 50 星标
  • 更新于
在 GitHub 查看 mixelpixx/SSH-MCP

使用说明

MCP SSH服务器

一种模型上下文协议(MCP)服务器,提供对远程服务器和网络设备的全面SSH和串行控制台访问。使Claude Desktop等AI工具能够通过网络SSH连接和直接USB到串行控制台访问安全地管理Linux服务器、网络交换机和基础设施设备。

特性

核心SSH功能

  • 基于密码或密钥的身份验证的SSH连接管理
  • 具有超时处理的远程命令执行
  • 通过SFTP上传和下载文件
  • 目录列表和文件操作
  • 安全连接处理

网络设备管理

  • USB到串行控制台访问 -通过FTDI和其他USB适配器直接连接控制台
  • 网络交换机管理 -完全支持思科IOS/IOS-XE和Aruba交换机
  • 设备发现 -自动检测开关类型和功能
  • 配置管理 -备份、恢复和自动配置
  • 网络诊断 -内置ping、traceroute和连接测试
  • 控制台到SSH的转换 -通过控制台连接自动设置SSH
  • 固件管理 -上传、验证、安装和回滚交换机固件

服务器管理

  • Ubuntu服务器管理工具(Nginx、SSL、软件包、防火墙)
  • 与Claude Desktop、VS Code和其他MCP兼容客户端兼容

真实世界生产测试

该工具已在生产网络环境中经过广泛测试:

  • 网络发现 -成功发现生产交换机上以前未知的抖动端口,这些端口导致间歇性连接问题
  • 零停机 -管理实时生产网络中的多个交换机,而不会造成任何网络中断或中断
  • 节省时间 -自动SSH配置将交换机设置时间从15-20分钟缩短到2分钟以下
  • 可靠性 -跨多个网络设备的生产部署过程中零事故
  • USB转串行兼容性 -使用FTDI FT232R/FT232H、Prolific PL2303、Silicon Labs CP2102/CP2104和CH340适配器进行测试
  • 交换机兼容性 -已在Cisco Catalyst 2960/3560/3750和Aruba 2530/2930系列交换机上验证

该工具已被证明足够可靠,可以在不需要单独的实验室环境进行测试的情况下完成生产网络管理任务。

先决条件

  • Node.js 18或更高版本
  • npm或纱线
  • 与Windows、macOS和Linux兼容

安装

  1. 克隆存储库:

    git clone https://github.com/yourusername/mcp-ssh-server.git
    cd mcp-ssh-server
    
  2. 安装依赖项:

    npm install
    
  3. 构建项目:

    npm run build
    
  4. 全局安装(可选):

    npm install -g .
    

配置

Claude桌面配置

  1. 打开克劳德桌面
  2. 转到“设置”>“开发工具”(或按Ctrl+Shift+D)
  3. 编辑MCP配置
  4. 添加以下配置:
{
  "mcpServers": {
    "ssh-server": {
      "command": "node",
      "args": ["/path/to/mcp-ssh-server/build/index.js"],
      "env": {
        "NODE_NO_WARNINGS": "1"
      }
    }
  }
}

重要提示: 替换 /path/to/mcp-ssh-server/build/index.js 带有您构建的index.js文件的绝对路径。

VS代码配置(如果使用MCP扩展)

创建或编辑 .vscode/mcp.json 在您的工作空间中:

{
  "mcpServers": {
    "ssh-server": {
      "command": "node",
      "args": ["/path/to/mcp-ssh-server/build/index.js"]
    }
  }
}

可用工具

核心SSH工具

ssh-connect

建立与远程服务器的SSH连接。

参数:

  • host (必填)-主机名或IP地址
  • username (必填)-SSH用户名
  • password (可选)-SSH密码
  • privateKeyPath (可选)-私钥文件的路径
  • passphrase (可选)-私钥密码
  • port (可选)-SSH端口(默认值:22)
  • connectionId (可选)-此连接的唯一标识符

退货:

  • success -布尔值表示成功
  • connectionId -用于后续命令的ID
  • message -连接状态消息

例子:

Connect to my server at example.com using username 'admin' and password authentication

ssh_exec

在远程服务器上执行命令。

参数:

  • connectionId (必填)-来自ssh_connect的ID
  • command (必填)-执行命令
  • cwd (可选)-工作目录
  • timeout (可选)-命令超时(毫秒)(默认值:60000)

退货:

  • code -退出代码
  • signal -终止进程的信号(如果有的话)
  • stdout -标准输出
  • stderr -标准误差

例子:

Run "ls -la /var/www/html" on the server

ssh_upload_file

将文件上载到远程服务器。

参数:

  • connectionId (必填)-来自ssh_connect的ID
  • localPath (必需)-本地文件路径
  • remotePath (必需)-远程目标路径

退货:

  • success -布尔值表示成功
  • message -上传状态消息

ssh下载文件

从远程服务器下载文件。

参数:

  • connectionId (必填)-来自ssh_connect的ID
  • remotePath (必需)-远程文件路径
  • localPath (必需)-本地目标路径

退货:

  • success -布尔值表示成功
  • message -下载状态消息

ssh列表文件

列出远程服务器上某个目录中的文件。

参数:

  • connectionId (必填)-来自ssh_connect的ID
  • remotePath (必需)-列表的目录路径

退货:

  • files -具有属性的文件对象数组:
    • filename -文件名
    • isDirectory -布尔值,指示它是否是一个目录
    • size -文件大小
    • lastModified -上次修改时间

ssh断开连接

关闭SSH连接。

参数:

  • connectionId (必填)-来自ssh_connect的ID

退货:

  • success -布尔值表示成功
  • message -断开连接状态消息

Claude使用示例

  1. 连接到您的服务器:

    Please connect to my VPS at example.com using username 'admin' and my SSH key at ~/.ssh/id_rsa
    
  2. 检查服务器状态:

    Run the command "systemctl status nginx" to check web server status
    
  3. 上传网站文件:

    Upload my local file ~/websites/index.html to /var/www/html/index.html on the server
    
  4. 列出网站文件:

    Show me all files in the /var/www/html directory
    
  5. 下载备份:

    Download the file /var/backups/website-backup.tar.gz to my local Downloads folder
    
  6. 完成后断开连接:

    Please disconnect from the SSH session
    

网络交换机管理工具

switch_discover_device

发现并识别网络交换机设备类型和功能。

参数:

  • connectionId (必需)-活动SSH连接的ID
  • enablePassword (可选)-启用特权模式密码

switch_show_界面

显示网络交换机上的接口状态和配置。

参数:

  • connectionId (必需)-活动SSH连接的ID
  • interfaceType (可选)-要显示的接口类型
  • enablePassword (可选)-启用特权模式密码

switch_show_vlans

显示网络交换机上的VLAN配置和状态。

参数:

  • connectionId (必需)-活动SSH连接的ID
  • enablePassword (可选)-启用特权模式密码

switch_backup_config

备份开关配置(运行或启动配置)。

参数:

  • connectionId (必需)-活动SSH连接的ID
  • configType (可选)-要备份的配置类型
  • enablePassword (可选)-启用特权模式密码

开关网络诊断

从交换机运行网络诊断(ping、traceroute)。

参数:

  • connectionId (必需)-活动SSH连接的ID
  • target (必填)-目标IP地址或主机名
  • diagnosticType (可选)-要运行的诊断类型
  • enablePassword (可选)-启用特权模式密码

switch_show_mac_table

在网络交换机上显示MAC地址表。

参数:

  • connectionId (必需)-活动SSH连接的ID
  • vlan (可选)-显示MAC地址的特定VLAN
  • enablePassword (可选)-启用特权模式密码

USB转串行控制台工具

这些工具允许使用USB到串行适配器直接控制台访问网络设备。这对于初始设备设置、网络连接丢失或SSH尚未配置时的紧急访问至关重要。

支持的USB转串行适配器:

  • FTDI FT232R/FT232H(推荐-最可靠)
  • 多产的PL2303(广泛兼容)
  • 硅实验室CP2102/CP2104(性能良好)
  • CH340/CH341芯片组(预算友好型选项)

所有适配器均使用标准的Cisco/Arbua控制台电缆(RJ45至DB9或直接USB)。

serial_list_ports

列出系统上可用的USB转串行端口。自动检测FTDI、Prolific、Silicon Labs和CH340适配器。

例子:

Show me all available serial ports

串行连接

通过USB到串行控制台端口连接到网络设备。

参数:

  • port (必需)-串行端口名称(例如,Windows上的COM3,Linux上的/dev/ttyUSB0)
  • baudRate (可选)-波特率(默认值:大多数交换机为9600)
  • connectionId (可选)-连接的唯一标识符
  • deviceType (可选)-最佳设置的设备类型(思科、阿鲁巴、通用)

例子:

Connect to my Cisco switch console on COM3

serial_send_命令

通过串行连接向网络设备发送命令。

参数:

  • connectionId (必填)-活动串行连接的ID
  • command (必填)-发送到设备的命令
  • waitForResponse (可选)-等待设备响应
  • timeout (可选)-响应超时(毫秒)

例子:

Send "show version" command to the console connection

serial_discover_device

通过串行连接发现设备类型和功能。自动识别思科IOS、思科IOS-XE、Aruba和通用设备。

参数:

  • connectionId (必填)-活动串行连接的ID

例子:

Discover what type of device is connected

serial_list_connections

列出所有活动的串行连接。

serial_disconnect

断开与串行端口的连接。

参数:

  • connectionId (必填)-活动串行连接的ID

Ubuntu网站管理工具

以下Ubuntu服务器管理工具可用:

  • ubuntu_nginx_control -Web服务器控制(启动、停止、重新启动、状态、重新加载、检查配置)
  • ubuntu_update_packages -仅具有安全选项的系统包更新
  • ubuntu_ssl_证书 -使用Let's Encrypt进行SSL证书管理(颁发、续订、状态、列表)
  • ubuntu_网站_部署 -具有自动备份和恢复功能的网站部署
  • ubuntuufw_firewall -防火墙(UFW)管理(启用、禁用、允许、拒绝、删除)

SSH设置和自动化工具

这些工具通过控制台连接自动配置网络交换机上的SSH访问,实现了从仅控制台到基于SSH的管理的平稳过渡。

switch_generate_ssh_config

根据设备类型和安全级别为网络交换机生成SSH配置模板。

参数:

  • deviceType (可选)-设备类型:cisco、aruba(如果未指定,则自动检测)
  • securityLevel (可选)-安全级别:基本、安全(默认:基本)
  • hostname (必需)-切换主机名
  • ip_address (必填)-管理IP地址
  • subnet_mask (可选)-子网掩码(默认值:255.255.255.0)
  • gateway (必需)-默认网关
  • username (必填)-SSH用户名
  • password (必填)-SSH密码

switch_apply_ssh_config

通过活动串行控制台连接将SSH配置应用于交换机。

参数:

  • serialConnectionId (必填)-活动串行连接的ID
  • deviceType (可选)-设备类型:思科、阿鲁巴
  • hostname (必需)-切换主机名
  • ip_address (必填)-管理IP地址
  • gateway (必需)-默认网关
  • username (必填)-SSH用户名
  • password (必填)-SSH密码
  • confirmApply (必填)-必须正确才能继续

开关验证状态

通过串行连接检查交换机上的当前SSH配置状态。

参数:

  • serialConnectionId (必填)-活动串行连接的ID

switch_test_ssh_connection

测试与新配置交换机的SSH连接。

参数:

  • ip_address (必填)-交换机IP地址
  • username (必填)-SSH用户名
  • password (必填)-SSH密码
  • port (可选)-SSH端口(默认值:22)

开关完成ssh_setup

通过控制台连接完成端到端SSH设置工作流程。这自动化了在交换机上配置SSH的整个过程。

参数:

  • serialConnectionId (必填)-活动串行连接的ID
  • hostname (必需)-切换主机名
  • ip_address (必填)-管理IP地址
  • gateway (必需)-默认网关
  • username (必填)-SSH用户名
  • password (必填)-SSH密码
  • confirmSetup (必填)-必须正确才能继续

控制台到SSH转换工具

console_to_ssh_transition

完成自动化工作流程,将网络交换机从仅控制台访问转换为SSH管理。这是初始开关设置的推荐工具。

参数:

  • port (必需)-串行端口(例如COM3、/dev/ttyUSB0)
  • hostname (必需)-切换主机名
  • ip_address (必填)-管理IP地址
  • gateway (必需)-默认网关
  • username (必填)-SSH用户名
  • password (必填)-SSH密码
  • deviceType (可选)-设备类型:cisco、aruba(如果未指定,则自动检测)
  • confirmTransition (必填)-必须正确才能继续

例子:

Set up SSH on my Cisco switch connected to COM3 with hostname "switch-core-01", IP 192.168.1.10, gateway 192.168.1.1, username "admin"

quick_ssh_check

通过串行连接快速检查交换机上的SSH状态,而无需进行任何更改。

参数:

  • port (必需)-串行端口
  • baudRate (可选)-波特率(默认值:9600)
  • enablePassword (可选)-如果需要,启用密码

固件管理工具

这些工具为网络交换机提供全面的固件管理功能,包括版本检查、固件上传、验证、安装和回滚准备。

开关检查固件

检查网络交换机上的当前固件版本和系统信息。

参数:

  • connectionId (必需)-活动SSH连接的ID
  • enablePassword (可选)-启用特权模式密码

退货:

  • 当前固件版本
  • 启动版本
  • 设备型号和序列号
  • 系统运行时间
  • 完整版本输出

switch_check_storage

在上传固件之前,请验证交换机上的可用存储空间。

参数:

  • connectionId (必需)-活动SSH连接的ID
  • enablePassword (可选)-启用特权模式密码

退货:

  • 闪存信息
  • 可用空间
  • 文件系统详细信息

switch_upload_firmware

通过SFTP将固件文件上传到网络交换机。支持具有30分钟超时的大型固件文件。

参数:

  • connectionId (必需)-活动SSH连接的ID
  • localFirmwarePath (必需)-固件文件的本地路径
  • remotePath (可选)-交换机上的远程路径(默认:flash:/filename)
  • enablePassword (可选)-启用特权模式密码

例子:

Upload firmware file ~/downloads/c2960-lanbasek9-mz.150-2.SE11.bin to the switch

开关验证固件

使用MD5校验和验证交换机上上传的固件文件的完整性。

参数:

  • connectionId (必需)-活动SSH连接的ID
  • firmwarePath (必需)-交换机上固件文件的路径
  • enablePassword (可选)-启用特权模式密码

退货:

  • 验证状态
  • MD5校验和结果
  • 文件信息

开关安装固件

在交换机上安装固件,并可选择重新启动以应用更新。

参数:

  • connectionId (必需)-活动SSH连接的ID
  • firmwarePath (必需)-交换机上固件文件的路径
  • enablePassword (可选)-启用特权模式密码
  • autoReboot (可选)-安装后自动重新启动(默认值:false)

重要提示: 这将修改引导配置。首先在实验室环境中进行测试!

例子:

Install firmware flash:/c2960-lanbasek9-mz.150-2.SE11.bin and reboot the switch

switch_prepare_rollback

准备固件回滚所需的信息,以防新固件出现问题。

参数:

  • connectionId (必需)-活动SSH连接的ID
  • enablePassword (可选)-启用特权模式密码

退货:

  • 当前启动配置
  • 可用固件映像
  • 回滚说明

USB转串行控制台设置

硬件要求

USB转串行适配器:

  • 基于FTDI的适配器(FT232R、FT232H)-可靠性的最佳选择
  • 多产的PL2303-广泛可用且兼容
  • Silicon Labs CP2102/CP2104-性能和稳定性良好
  • CH340/CH341-预算选项,在大多数系统上运行良好

控制台电缆:

  • 思科控制台电缆(RJ45至DB9或USB)
  • Aruba/HP控制台电缆(RJ45至DB9或USB)
  • 通用控制台电缆适用于大多数设备

驱动程序安装

窗户:

  • FTDI驱动程序:通常自动安装,或从ftdichip.com下载
  • 多产驱动程序:可从prolifec.com.tw获取
  • Silicon Labs驱动程序:从silabs.com下载
  • CH340驱动程序:通常包含在Windows 10/11中,或单独下载

macOS:

  • FTDI适配器:通常开箱即用
  • 其他适配器:可能需要制造商安装驱动程序

Linux:

  • 大多数适配器可以立即与内核驱动程序配合使用
  • FTDI、Silicon Labs、CH340:内置于内核中
  • 检查 dmesg 插入适配器以验证检测结果后

控制台快速入门

  1. 将USB到串行适配器连接到计算机
  2. 将控制台电缆从适配器连接到交换机控制台端口
  3. 列出可用端口:“显示可用串行端口”
  4. 连接到端口:“连接到思科交换机的COM3”
  5. 发送命令或运行自动设置

安全注意事项

  • 安全地存储SSH私钥
  • 尽可能使用基于密钥的身份验证
  • 限制SSH访问特定IP地址
  • 保持服务器更新
  • 使用强密码或短语(至少8个字符)
  • 安全地物理访问控制台端口和USB到串行适配器
  • 考虑在 .env 敏感信息文件

故障排除

服务器无法启动

  • 检查是否安装了Node.js: node --version
  • 验证是否安装了所有依赖项: npm install
  • 重建项目: npm run build

连接问题

  • 验证SSH服务器是否在目标上运行
  • 检查防火墙设置
  • 确认凭据正确
  • 首先手动测试SSH连接

Claude桌面集成

  • 确保配置中的路径是绝对的
  • 配置更改后重新启动Claude Desktop
  • 检查开发人员控制台以获取错误消息

发展

要修改或扩展服务器,请执行以下操作:

  1. 在中编辑源文件 src/
  2. 重建: npm run build
  3. 测试您的更改
  4. 重新启动Claude Desktop或VS Code以获取更改

以开发模式运行

在开发过程中进行快速测试:

npm run dev

贡献

欢迎对其他工具和功能的贡献。请随时提交pull请求或开放问题以进行增强和bug修复。

许可证

MIT许可证