【免费下载链接】ssh-mcp-server基于 SSH 的 MCP 服务 ‍♀️。已被MCP官方收录 。 SSH MCP Server ‍♀️. It has been included in the community MCP repository .项目地址https://gitcode.com/gh_mirrors/ss/ssh-mcp-server点击查看免费下载当你让 AI 通过ssh-mcp-server远程操作服务器时命令白名单与黑名单是防止 AI 执行危险命令的关键防线。本文带你用 4 个实用技巧快速上手 ssh-mcp-server 的白名单与黑名单机制把 AI 的权限关进安全笼让远程 SSH 操作既高效又安心。ssh-mcp-server 是一个基于 SSH 的 MCPModel Context Protocol服务已被 MCP 官方社区收录。它让 Claude、Cursor 等 AI 助手通过标准化接口远程执行 SSH 命令、传输文件。能力越大风险越大——如果放任 AI 为所欲为一句被提示注入诱导的rm -rf就可能毁掉整台生产服务器。好在它内置了灵活的黑白名单安全控制本文就讲透怎么配。 为什么 AI 连上服务器后你必须配白名单AI 助手的命令创造力是不可预测的幻觉命令AI 可能凭空编造出带危险参数的命令提示注入如果 AI 读取了网页、邮件或文件内容恶意内容可能诱导它执行本不该执行的命令组合爆炸ls本身无害但ls; rm -rf /就是灾难。ssh-mcp-server 对此的态度非常明确未配置白名单时启动日志会直接打印 WARNING强烈建议限制可执行命令范围——这段逻辑写在 src/core/mcp-server.ts。而它的白名单机制不是简单的字符串前缀匹配而是一套经过深思熟虑的校验流程藏在 src/services/ssh-connection-manager.ts 的validateCommand方法里。 白名单 vs 黑名单校验规则一次讲清维度白名单--whitelist-W黑名单--blacklist-B匹配方式完整命令精确匹配正则必须从头到尾覆盖整条命令部分匹配正则命中命令任意片段即拦截设计思路默认拒绝只放行明确允许的默认放行拦截已知危险的附加保护启用后直接拒绝含;、、|、反引号、$()、、、换行符的命令正则默认区分大小写推荐场景生产环境首选快速兜底、过渡期校验顺序系统先检查命令是否完整匹配白名单再检查是否命中黑名单。同时配置时命令必须两项都通过才能执行——这是白名单圈定上限 黑名单拦截下限的双保险对应文档说明见 README.md。 白名单和黑名单都是正则表达式多个模式用逗号分隔参数解析逻辑在 src/cli/command-line-parser.ts配置类型定义见 src/models/types.ts。️ 技巧一用命令白名单把 AI 锁进只读模式白名单是第一道也是最强的一道防线。核心思想不写AI 不能做什么只写AI 能做什么。给只读型查看命令开白名单是最稳妥的起点例如只放行ls、cat、df--whitelist, ^ls(?: [A-Za-z0-9_./-])*$,^cat [A-Za-z0-9_./-]$,^df(?: -[A-Za-z])*(?: [A-Za-z0-9_./-])?$三个使用要点务必加^和$锚点白名单要求正则覆盖完整命令显式锚点让规则更易读、更易审计官方测试就明确要求白名单应要求正则覆盖完整命令见 test/ssh-connection-manager.test.js需要组合操作写脚本不要把多个操作用 Shell 语法硬拼进白名单正确做法是把逻辑放进一个单独审查过的脚本只白名单调用这个脚本这一条固定命令后台任务同样受限job-start启动的长任务走的是与execute-command完全相同的白名单/黑名单校验见 src/services/ssh-connection-manager.ts不存在绕过防线的后门。 技巧二用黑名单拦截典型危险命令还没想好白名单放哪些先用黑名单挡住最危险的那批--blacklist, (?i:^\\s*rm .*),(?i:^\\s*shutdown.*),(?i:^\\s*reboot.*)这条黑名单拦截rm类删除命令、关机与重启命令^\\s*用来容忍命令前可能出现的空格。⚠️ 大小写陷阱请用(?i:...)别用裸(?i)这是新手最容易踩的坑黑名单正则默认区分大小写^shutdown.*拦不住Shutdown /a需要不区分大小写时用作用域内联标志把每条模式单独包起来(?i:shutdown.*)不要使用裸(?i)——JavaScript 正则不支持这种写法非法正则会导致服务器启动即失败在 JSON 配置里反斜杠要转义正则的\s必须写成\\s。 技巧三白名单自带防注入管道与命令替换全部失效这是 ssh-mcp-server 白名单机制最精妙的部分白名单匹配的是完整命令而不是命令前缀。只要启用了白名单包含以下任意字符的命令会在匹配之前被直接拒绝错误信息Command contains shell control syntax forbidden by the whitelist源码见 src/services/ssh-connection-manager.ts危险语法作用后果;命令连接 / 后台任务拒绝执行\|管道拒绝执行重定向拒绝执行反引号、$()命令替换拒绝执行换行符多命令拼接拒绝执行也就是说即使白名单里放了lsAI 也无法通过ls; rm -rf /或ls | sh这类技巧借壳执行其他命令——因为含;、|的命令根本走不到匹配那一步。这套保守设计让白名单真正成为防注入的闸门而不是可以被 Shell 语法绕过的摆设。 技巧四用路径白名单锁死文件传输范围命令管住了文件传输也不能裸奔。ssh-mcp-server 的upload/download工具走 SFTP未配置路径白名单时任意远端路径都允许但启动时会打印警告见 src/core/mcp-server.ts。推荐显式配置把 AI 能触碰的目录压到最小--allowed-remote-paths, /var/log/app, /home/app/data, --allowed-local-paths, /home/app/uploads这一招直接封死了最典型的风险场景AI 被提示注入后去读写~/.ssh/authorized_keys、/etc/sshd_config这类敏感文件——路径不在白名单内读写都会被拒绝。⚙️ 完整配置示例一键写入 MCP 客户端把白名单与黑名单组合起来写入你的 MCP 客户端配置文件即可每个参数和取值必须是args数组中的独立元素{ mcpServers: { ssh-mcp-server: { command: npx, args: [ -y, fangjunjie/ssh-mcp-server, --host, 192.168.1.1, --username, root, --password, your-password, --whitelist, ^ls(?: [A-Za-z0-9_./-])*$,^cat [A-Za-z0-9_./-]$,^df(?: -[A-Za-z])*$, --blacklist, (?i:^\\s*rm .*),(?i:^\\s*shutdown.*) ] } } }多主机的场景下--whitelist、--blacklist等策略参数作为进程级默认值对所有主机生效需要按主机差异化策略时改用多连接配置方式详见 README.md 的多连接章节。 常见坑与快速排查现象原因解决服务器启动失败报Invalid whitelist pattern某条白名单/黑名单正则非法检查括号、^/$锚点JSON 中反斜杠记得双写用了(?i)却启动失败JavaScript 正则不支持裸(?i)改为每条模式各自包裹(?i:模式)Shutdown /a没被拦下黑名单默认区分大小写用(?i:^\\s*shutdown.*)白名单没拦住ls; rm -rf /不会发生——启用白名单后含;的命令直接拒绝这正是设计目标放心启动日志出现 WARNING有主机未配置白名单或未配置allowedRemotePaths按本文技巧一、四补齐✍️ 写在最后给 AI 开门的同时给它上锁是 ssh-mcp-server 安全使用的第一原则。记住这套组合拳白名单优先能枚举允许的命令就用白名单锁定只读模式起步黑名单兜底(?i:...)包住大小写陷阱拦住rm、shutdown等高危命令信任防注入机制白名单天然封死管道、重定向、命令替换等绕过路径路径白名单收口--allowed-remote-paths/--allowed-local-paths锁死 SFTP 活动范围。配置完成后即使 AI好心办坏事或被恶意内容诱导最多也只是收到一条Command validation failed的拒绝服务器安然无恙。 相关源码位置校验核心 src/services/ssh-connection-manager.ts · 启动告警 src/core/mcp-server.ts · 官方用法说明 README.md赞分享【免费下载链接】ssh-mcp-server基于 SSH 的 MCP 服务 ‍♀️。已被MCP官方收录 。 SSH MCP Server ‍♀️. It has been included in the community MCP repository .项目地址https://gitcode.com/gh_mirrors/ss/ssh-mcp-server点击查看免费下载相关推荐SmartDNS域名白名单/黑名单配置完全指南SmartDNS域名白名单/黑名单配置完全指南 引言DNS过滤的痛点与解决方案 你是否遇到过以下问题企业内网域名被错误解析到公网IP、家庭网络中孩子访问不良网络后端KOReader 上手指南30分钟搞定你的墨水屏书库KOReader 上手指南30分钟搞定你的墨水屏书库 电子墨水屏设备自带的阅读软件常常格式支持不全、排版不可调。 KOReader 是一款开源电子书阅读器应嵌入式桌面应用Windmill防火墙IP白名单和黑名单配置Windmill防火墙IP白名单和黑名单配置 引言为什么需要IP访问控制 在现代企业级应用部署中API安全是不可忽视的一环。Windmill作为开源的工后端前端工作流自动化低代码任务调度上一篇EVCC 开源电动汽车充电管理系统光伏余电 低价电双驱动怎么配完整上手指南下一篇Win11Debloat 完整指南10 分钟移除预装应用、关闭遥测给 Windows 11/10 做深度瘦身创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考