https://github.com/agczsz/mcp-ssh-go
市面上很多 SSH MCP 服务端动辄开放完整的交互式 PTY 终端、sudo/su 提权和端口转发,权限面过大且极难审计。AI Agent 一旦误操作或遭受 Prompt 注入,极易演变为灾难。
mcp-ssh-go 采用了克制的反向设计思路:严格限制为 8 个离散、可审计的非交互式操作,无交互 Shell、无提权通道、无端口隧道,以单一静态二进制文件运行,杜绝命令逃逸风险。

最大亮点
- SSH-AGENT支持:几乎市面上所有SSH-MCP都不支持SSH-AGNET,SSH-AGENT把密钥保存在密码库内,使用时载入内存,任何软件无法直接读取密钥,但是却能通过它进行间接认证,十分安全
核心特性
- 单静态二进制文件:基于 Go 构建(
CGO_ENABLED=0),无 Node.js、Python 或环境依赖,有效防范安装阶段的供应链投毒风险。 - 最小权限攻击面:仅提供 8 个原子化工具,每次调用均为独立、结果可控的受限操作。
- 智能防爆上下文(Output Cap):防止 Agent 执行
cat large.log撑爆模型上下文。输出超出阈值时(默认 128 KB),自动保留 前 75% 配置/头信息 + 后 25% 结尾摘要,并内嵌截断提示。 - 安全的凭据管理:密码与密钥密码仅保存在系统原生 Keyring(操作系统密钥环)中;支持
ssh-agent、ProxyJump 跳板机与 SOCKS5 代理。 - 内置轻量 Web GUI:提供本地可视化管理面板(默认
:2224),与 MCP 服务端(:2223/mcp,基于 Streamable HTTP + Bearer Token 鉴权)共享配置。
支持的 8 个工具
| 工具名 | 功能说明 |
|---|---|
ssh_list_servers |
获取本地配置的服务器列表(不泄露凭据与密钥路径) |
ssh_connect |
打开会话并分配 session_id(支持配置库或 ~/.ssh/config) |
ssh_disconnect |
主动关闭并销毁指定会话 |
ssh_exec |
在已有会话中运行非交互命令(返回 stdout/stderr/退出码) |
ssh_quick_exec |
无状态单次执行:连接 -> 运行一条命令 -> 自动断开 |
ssh_list_dir |
通过 SFTP 读取远程目录(上限 2000 项防溢出) |
ssh_upload |
通过 SFTP 上传本地文件至远端 |
ssh_download |
通过 SFTP 下载远端文件至本地 |
快速开始
1. 编译与运行
# 静态编译
CGO_ENABLED=0 go build -o mcp-ssh-go .
# 启动服务(设置鉴权 Token)
export SSH_MCP_AUTH_TOKEN="your-secure-token-here"
./mcp-ssh-go
- MCP 端点:
[http://127.0.0.1:2223/mcp](http://127.0.0.1:2223/mcp) - 管理面板:
[http://127.0.0.1:2224](http://127.0.0.1:2224)(如需禁用,传入SSH_MCP_GUI=0)
2. 配置 MCP 客户端(以 Claude Desktop 为例)
编辑客户端配置文件(如 claude_desktop_config.json):
{
"mcpServers": {
"ssh": {
"type": "http",
"url": "http://127.0.0.1:2223/mcp",
"headers": {
"Authorization": "Bearer your-secure-token-here"
}
}
}
}

不明觉厉,顶一下
这是防止ai把服务器炸了的嘛
@ryanbrook #2 加了个锁 我是有个自建的凭证库 但这个挺好