使用说明
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兼容
安装
-
克隆存储库:
git clone https://github.com/yourusername/mcp-ssh-server.git cd mcp-ssh-server -
安装依赖项:
npm install -
构建项目:
npm run build -
全局安装(可选):
npm install -g .
配置
Claude桌面配置
- 打开克劳德桌面
- 转到“设置”>“开发工具”(或按Ctrl+Shift+D)
- 编辑MCP配置
- 添加以下配置:
{
"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-用于后续命令的IDmessage-连接状态消息
例子:
Connect to my server at example.com using username 'admin' and password authentication
ssh_exec
在远程服务器上执行命令。
参数:
connectionId(必填)-来自ssh_connect的IDcommand(必填)-执行命令cwd(可选)-工作目录timeout(可选)-命令超时(毫秒)(默认值:60000)
退货:
code-退出代码signal-终止进程的信号(如果有的话)stdout-标准输出stderr-标准误差
例子:
Run "ls -la /var/www/html" on the server
ssh_upload_file
将文件上载到远程服务器。
参数:
connectionId(必填)-来自ssh_connect的IDlocalPath(必需)-本地文件路径remotePath(必需)-远程目标路径
退货:
success-布尔值表示成功message-上传状态消息
ssh下载文件
从远程服务器下载文件。
参数:
connectionId(必填)-来自ssh_connect的IDremotePath(必需)-远程文件路径localPath(必需)-本地目标路径
退货:
success-布尔值表示成功message-下载状态消息
ssh列表文件
列出远程服务器上某个目录中的文件。
参数:
connectionId(必填)-来自ssh_connect的IDremotePath(必需)-列表的目录路径
退货:
files-具有属性的文件对象数组:filename-文件名isDirectory-布尔值,指示它是否是一个目录size-文件大小lastModified-上次修改时间
ssh断开连接
关闭SSH连接。
参数:
connectionId(必填)-来自ssh_connect的ID
退货:
success-布尔值表示成功message-断开连接状态消息
Claude使用示例
-
连接到您的服务器:
Please connect to my VPS at example.com using username 'admin' and my SSH key at ~/.ssh/id_rsa -
检查服务器状态:
Run the command "systemctl status nginx" to check web server status -
上传网站文件:
Upload my local file ~/websites/index.html to /var/www/html/index.html on the server -
列出网站文件:
Show me all files in the /var/www/html directory -
下载备份:
Download the file /var/backups/website-backup.tar.gz to my local Downloads folder -
完成后断开连接:
Please disconnect from the SSH session
网络交换机管理工具
switch_discover_device
发现并识别网络交换机设备类型和功能。
参数:
connectionId(必需)-活动SSH连接的IDenablePassword(可选)-启用特权模式密码
switch_show_界面
显示网络交换机上的接口状态和配置。
参数:
connectionId(必需)-活动SSH连接的IDinterfaceType(可选)-要显示的接口类型enablePassword(可选)-启用特权模式密码
switch_show_vlans
显示网络交换机上的VLAN配置和状态。
参数:
connectionId(必需)-活动SSH连接的IDenablePassword(可选)-启用特权模式密码
switch_backup_config
备份开关配置(运行或启动配置)。
参数:
connectionId(必需)-活动SSH连接的IDconfigType(可选)-要备份的配置类型enablePassword(可选)-启用特权模式密码
开关网络诊断
从交换机运行网络诊断(ping、traceroute)。
参数:
connectionId(必需)-活动SSH连接的IDtarget(必填)-目标IP地址或主机名diagnosticType(可选)-要运行的诊断类型enablePassword(可选)-启用特权模式密码
switch_show_mac_table
在网络交换机上显示MAC地址表。
参数:
connectionId(必需)-活动SSH连接的IDvlan(可选)-显示MAC地址的特定VLANenablePassword(可选)-启用特权模式密码
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(必填)-活动串行连接的IDcommand(必填)-发送到设备的命令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(必填)-活动串行连接的IDdeviceType(可选)-设备类型:思科、阿鲁巴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(必填)-活动串行连接的IDhostname(必需)-切换主机名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连接的IDenablePassword(可选)-启用特权模式密码
退货:
- 当前固件版本
- 启动版本
- 设备型号和序列号
- 系统运行时间
- 完整版本输出
switch_check_storage
在上传固件之前,请验证交换机上的可用存储空间。
参数:
connectionId(必需)-活动SSH连接的IDenablePassword(可选)-启用特权模式密码
退货:
- 闪存信息
- 可用空间
- 文件系统详细信息
switch_upload_firmware
通过SFTP将固件文件上传到网络交换机。支持具有30分钟超时的大型固件文件。
参数:
connectionId(必需)-活动SSH连接的IDlocalFirmwarePath(必需)-固件文件的本地路径remotePath(可选)-交换机上的远程路径(默认:flash:/filename)enablePassword(可选)-启用特权模式密码
例子:
Upload firmware file ~/downloads/c2960-lanbasek9-mz.150-2.SE11.bin to the switch
开关验证固件
使用MD5校验和验证交换机上上传的固件文件的完整性。
参数:
connectionId(必需)-活动SSH连接的IDfirmwarePath(必需)-交换机上固件文件的路径enablePassword(可选)-启用特权模式密码
退货:
- 验证状态
- MD5校验和结果
- 文件信息
开关安装固件
在交换机上安装固件,并可选择重新启动以应用更新。
参数:
connectionId(必需)-活动SSH连接的IDfirmwarePath(必需)-交换机上固件文件的路径enablePassword(可选)-启用特权模式密码autoReboot(可选)-安装后自动重新启动(默认值:false)
重要提示: 这将修改引导配置。首先在实验室环境中进行测试!
例子:
Install firmware flash:/c2960-lanbasek9-mz.150-2.SE11.bin and reboot the switch
switch_prepare_rollback
准备固件回滚所需的信息,以防新固件出现问题。
参数:
connectionId(必需)-活动SSH连接的IDenablePassword(可选)-启用特权模式密码
退货:
- 当前启动配置
- 可用固件映像
- 回滚说明
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插入适配器以验证检测结果后
控制台快速入门
- 将USB到串行适配器连接到计算机
- 将控制台电缆从适配器连接到交换机控制台端口
- 列出可用端口:“显示可用串行端口”
- 连接到端口:“连接到思科交换机的COM3”
- 发送命令或运行自动设置
安全注意事项
- 安全地存储SSH私钥
- 尽可能使用基于密钥的身份验证
- 限制SSH访问特定IP地址
- 保持服务器更新
- 使用强密码或短语(至少8个字符)
- 安全地物理访问控制台端口和USB到串行适配器
- 考虑在
.env敏感信息文件
故障排除
服务器无法启动
- 检查是否安装了Node.js:
node --version - 验证是否安装了所有依赖项:
npm install - 重建项目:
npm run build
连接问题
- 验证SSH服务器是否在目标上运行
- 检查防火墙设置
- 确认凭据正确
- 首先手动测试SSH连接
Claude桌面集成
- 确保配置中的路径是绝对的
- 配置更改后重新启动Claude Desktop
- 检查开发人员控制台以获取错误消息
发展
要修改或扩展服务器,请执行以下操作:
- 在中编辑源文件
src/ - 重建:
npm run build - 测试您的更改
- 重新启动Claude Desktop或VS Code以获取更改
以开发模式运行
在开发过程中进行快速测试:
npm run dev
贡献
欢迎对其他工具和功能的贡献。请随时提交pull请求或开放问题以进行增强和bug修复。
许可证
MIT许可证