MCP SSH会话
A. 模型上下文协议(MCP) 为AI助手提供SSH会话管理工具的服务器。
目的
此MCP服务器的构建有一个特定的目标: 具有工作sudo缓存和X11 askpass转发的持久SSH会话.
为什么这很重要?大多数现有解决方案为每个命令创建新的SSH连接,这意味着:
- 你必须每隔几秒钟一遍又一遍地输入你的sudo密码
- Sudo的凭据缓存变得无用,因为每个命令都在新的会话中运行
- 涉及多个sudo操作的复杂工作流变得令人痛苦地重复
通过维护持久的SSH会话,此服务器可以让sudo缓存按预期工作——只需输入一次密码,同一会话中的后续sudo命令就可以工作,而无需重新身份验证(在sudo的超时窗口内)。
重要提示: 如果你的服务器没有 ssh-askpass 如果已安装或无法转发X11,请使用另一台MCP服务器。
它做什么
- 连接到SSH主机 并保持持续会话
- 执行命令 远程输出捕获
- 支持sudo操作 通过X11转发(当
ssh-askpass可用) - 管理多个会话 具有唯一标识符
- 处理基本shell命令 包括管道和重定向
它还没有做什么
- 企业级安全 -这对于开发来说非常有效,但对于关键环境来说还不够坚固
- 连接认证 -完全依赖于您现有的SSH密钥设置
- 高级终端功能 -无PTY分配、终端大小调整或交互式程序
- 会话恢复 -如果MCP服务器崩溃,SSH会话将丢失
- 稳健的错误处理 -网络问题可能需要手动清理
- 与跨平台支持 -主要在Linux上测试,与Windows的兼容性有限
运作原理
服务器将bash中继脚本上传到远程主机,然后通过该脚本进行通信以执行命令。这是一种适用于基本用例的简单方法,但也有局限性。
需求
- 铁锈(用于建筑)
- 支持SCP的SSH客户端(
ssh,scp命令) ssh-askpass(用于sudo GUI提示)- 远程主机上的Bash
安装
cargo install --git https://github.com/ChristophRauch/mcp-ssh-connections或者,当您在本地签出源代码时
cargo install --path .MCP工具可用
ssh_connect-连接到SSH主机ssh_execute-在连接的会话上执行命令ssh_disconnect-关闭SSH会话ssh_list_sessions-列出活动会话
测试
基本测试脚本在 test/ 目录:
./test/test_mcp.sh # Test MCP protocol basics
./test/test_mcp_interactive.sh # Interactive session testing
./test/test_automated.sh # Automated test suite
./test/test_tools.sh # Tool-specific tests当前限制
这是一个有几个粗糙边缘的早期项目:
- 基本错误处理 -连接失败并不总是优雅的
- 无会话持久性 -服务器重新启动会丢失所有会话
- 有限的指挥安全 -命令转义可以改进
- 无连接池 -每个会话都是独立的
- 最小日志 -调试连接问题很困难
- X11依赖性 -sudo操作需要GUI环境
贡献
该项目将受益于社区在几个领域的贡献:
高优先级
- 更好的错误处理 以及连接恢复
- 会话持续 跨服务器重启
- 与跨平台支持 (尤其是Windows)
- 安全审计 和硬化
中优先级
- 集成测试 具有各种SSH配置
- 连接池 资源管理
- 改进日志记录 以及调试能力
- 文档 用于常见用例
想法欢迎
- 终端多路复用支持
- 非交互式sudo替代方案
- 自定义命令插件系统
- 配置文件支持
欢迎拉取请求、问题和反馈! 这是一项社区努力,旨在让人工智能助手可以访问SSH。
安全说明
- 非常适合开发和个人使用
- 使用现有的SSH密钥配置-不需要额外的身份验证
- 命令以您的正常SSH用户权限执行
- Sudo操作通过GUI密码提示
ssh-askpass - 对于敏感/生产环境,请先审核代码
*“它在我的机器上工作!”-但YMMV取决于你的SSH设置*
许可证
麻省理工学院
______________________________________________________________________
*实施MCP协议版本2024-11-05*
