news 2026/6/24 5:20:32

SSH MCP Server 详解:让 AI 安全地“握紧”你的服务器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SSH MCP Server 详解:让 AI 安全地“握紧”你的服务器

一、项目概述

ssh-mcp-server是一个基于 SSH 的 Model Context Protocol (MCP) 服务端实现,由开发者classfang(方俊杰)开源维护。它充当了 AI 助手与远程服务器之间的安全桥梁,让支持 MCP 协议的客户端(如 Claude Code、Cursor、Cline、CC Switch 等)能够通过标准化接口执行远程 SSH 命令、上传/下载文件,而无需将 SSH 凭据直接暴露给 AI 模型。

核心定位:credential 隔离 + 命令安全管控 + 标准化协议封装

项目地址:classfang/ssh-mcp-server | NPM:@fangjunjie/ssh-mcp-server


二、核心特性

特性说明
🔒安全连接支持密码认证、私钥认证(含 passphrase)、SSH Agent、双因素认证(2FA)
🛡️命令安全控制通过白名单/黑名单机制精确控制可执行命令范围,防止误操作
🔄标准化接口完全兼容 MCP 协议规范,无缝对接各类 MCP 客户端
🚇双传输模式exec模式(默认,支持文件传输)与shell模式(跳板机/堡垒机场景)
📂文件传输支持双向 SFTP 文件上传与下载
🔑凭据隔离SSH 凭据完全本地管理,AI 模型无法直接接触
🚀即开即用通过 NPX 直接运行,无需全局安装

三、工具列表

工具名功能描述
execute-command在远程服务器上执行 SSH 命令并返回结果
upload将本地文件上传至远程服务器指定路径
download从远程服务器下载文件到本地指定路径
list-servers列出所有已配置的 SSH 服务器连接

四、CC Switch 中如何配置

CC Switch 是一款开源的跨平台 AI CLI 统一管理工具,支持 Claude Code、Codex、Gemini CLI、OpenCode、Cursor 等多种 AI 编程助手。它通过 SQLite 数据库集中管理 MCP 服务器配置,支持 stdio、HTTP、SSE 三种传输类型,并能实现多应用间的双向同步。

在 CC Switch 中配置 ssh-mcp-server 时,本质上是将 MCP 服务器的 stdio 配置写入其内部数据库,然后由 CC Switch 代理转发给底层 AI 客户端。

4.1 基础配置(用户名+密码)

基础配置示例,适用于最常见的密码认证场景:

{"command":"npx","args":["-y","@fangjunjie/ssh-mcp-server","--host","192.168.3.6","--port","22","--username","root","--password","root"]}

配置要点解析:

  • command:npx— 使用 Node.js 的包执行器,无需全局安装
  • -y— 自动确认安装,避免交互式提示阻塞
  • @fangjunjie/ssh-mcp-server— 指定 NPM 包名,每次运行自动拉取最新版本
  • --host,--port,--username,--password— 标准 SSH 连接四元组
  • ⚠️ 关键格式:每个参数和值必须是args数组中的独立元素,禁止合并为"--host 192.168.3.6"

4.2 CC Switch 配置入口

在 CC Switch 桌面应用中配置步骤如下:

  1. 打开 CC Switch → 点击“MCP”标签页
  2. 点击“Add Server”“添加服务器”
  3. 选择传输类型为stdio(ssh-mcp-server 基于标准输入输出通信)
  4. 填写配置信息:
    • Name:ssh-mcp-server(或自定义,如homelab-server
    • Command:npx
    • Args: 按上述 JSON 格式逐行填入参数
  5. 启用该服务器,并选择需要同步的 AI 客户端(如 Claude Code、Cursor)
  6. 重启对应 AI 客户端使配置生效

CC Switch 会自动将配置同步到各客户端的配置文件中(如 Claude Code 的~/.claude/mcp.json或 Cursor 的.cursor/mcp.json),无需手动编辑。


五、进阶配置场景

5.1 私钥认证(推荐生产环境使用)

相比密码认证,私钥认证更安全,且支持 passphrase 保护:

{"command":"npx","args":["-y","@fangjunjie/ssh-mcp-server","--host","192.168.3.6","--port","22","--username","root","--privateKey","~/.ssh/id_rsa","--passphrase","your_key_passphrase"]}

5.2 复用 ~/.ssh/config

如果你已在~/.ssh/config中配置了主机别名,可直接复用:

{"command":"npx","args":["-y","@fangjunjie/ssh-mcp-server","--host","myserver"]}

对应的~/.ssh/config

Host myserver HostName 192.168.3.6 Port 22 User root IdentityFile ~/.ssh/id_rsa

5.3 命令白名单/黑名单(安全加固)

强烈建议在生产环境中启用命令限制,防止 AI 误执行危险操作:

白名单模式(仅允许只读命令):

{"command":"npx","args":["-y","@fangjunjie/ssh-mcp-server","--host","192.168.3.6","--port","22","--username","root","--password","root","--whitelist","^ls( .*)?,^cat .*,^df.*,^ps .*,^top.*"]}

黑名单模式(禁止高危命令):

{"command":"npx","args":["-y","@fangjunjie/ssh-mcp-server","--host","192.168.3.6","--port","22","--username","root","--password","root","--blacklist","^rm .*,^shutdown.*,^reboot.*,^mkfs.*,^dd .*"]}

规则说明:白名单和黑名单均使用逗号分隔的正则表达式。若同时配置,命令需同时通过两项检查(先白名单,后黑名单)。

5.4 跳板机/堡垒机(shell 模式)

当目标服务器仅暴露交互式 Shell(如堡垒机、网络设备)时,需切换为shell模式:

{"command":"npx","args":["-y","@fangjunjie/ssh-mcp-server","--host","bastion.example.com","--port","22","--username","ops","--password","pwd123456","--transport-mode","shell","--shell-ready-timeout","15000"]}

模式差异

  • exec(默认):支持execute-commanduploaddownload
  • shell:通过持久 Shell 会话执行命令,不支持文件传输(SFTP 不可用)

5.5 多服务器管理

当需要同时管理多台服务器时,推荐使用配置文件方式:

创建ssh-config.json

[{"name":"homelab","host":"192.168.3.6","port":22,"username":"root","password":"root"},{"name":"prod-web","host":"10.0.0.5","port":22,"username":"deploy","privateKey":"~/.ssh/prod_key","whitelist":"^ls( .*)?,^cat .*,^systemctl .*"}]

CC Switch 配置:

{"command":"npx","args":["-y","@fangjunjie/ssh-mcp-server","--config-file","/path/to/ssh-config.json"]}

使用时在 AI 对话中指定connectionName

在 prod-web 上执行 df -h
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/24 5:13:17

智能内容审核系统:从关键词匹配到上下文理解与意图判别

1. 项目概述:当“回收”遇上“多元态度”,内容审核的十字路口最近在和一些做社区运营、风控的朋友聊天,大家不约而同地提到了一个越来越棘手的难题:那些曾经被平台明令禁止的、带有明显侮辱或歧视色彩的“污名化语言”&#xff0c…

作者头像 李华
网站建设 2026/6/24 5:08:09

基于生物力学与隐私计算的唇语深度伪造检测技术解析

1. 项目概述:当“眼见”不再“为实”,我们如何守护真实?最近几年,深度伪造技术(Deepfake)的“进化”速度,已经远远超出了普通人的想象。从早期的换脸视频,到如今能够精准操控口型、表…

作者头像 李华
网站建设 2026/6/24 5:07:43

全同态加密神经网络推理优化:从理论到高吞吐量工程实践

1. 项目概述:当隐私计算遇上AI推理最近几年,数据隐私和AI模型推理的结合点,成了我们这些搞系统优化和密码学应用的人特别关注的领域。你肯定遇到过这种场景:一家医院想用顶尖的AI模型分析患者的医疗影像,但数据涉及高度…

作者头像 李华
网站建设 2026/6/24 5:00:50

ui-ux-pro-max-skill不是安装包,而是设计能力契约系统

1. “ui-ux-pro-max-skill安装”不是在装一个软件,而是在启动一套设计能力编译系统你搜“ui-ux-pro-max-skill安装”,点开前十个结果,八成会跳转到某个 GitHub 仓库的 README,或者某篇标题党教程——但它们几乎都漏掉了一个最关键…

作者头像 李华
网站建设 2026/6/24 4:56:21

Vue3 Composition API 真正用法:告别换皮 Options

1. 为什么“换皮 Options”是 Vue3 项目里最隐蔽的性能陷阱我见过太多团队在 Vue3 项目里写着<script setup>&#xff0c;却干着 Options API 的老活儿——把data搬进ref&#xff0c;把methods塞进普通函数&#xff0c;把computed和watch硬套进computed()和watch()调用里…

作者头像 李华
网站建设 2026/6/24 4:54:20

Vibe Coding:LLM时代IDE工作流的范式迁移

1. “Vibe Coding”不是玄学&#xff0c;是LLM时代下IDE工作流的范式迁移“Vibe Coding”这个词最近在开发者社区里像一杯刚摇匀的气泡水——表面浮着大量模糊的赞叹和截图&#xff0c;底下却少有人说清气泡从哪来、为什么非得这么摇。我第一次在GitHub Discussions里看到有人用…

作者头像 李华