ssh-mcp-go
用于SSH操作的MCP服务器,由以下组件构建:
- https://github.com/mark3labs/mcp-go
- https://github.com/melbahja/goph
它通过stdio公开了三个工具:
ssh_exec:运行远程命令并返回输出ssh_upload:将本地文件或目录上载到远程ssh_download:将远程文件或目录下载到本地ssh_exec_dynamic:使用每次调用的SSH参数运行远程命令
需求
- 转到1.20+(推荐)
- 您可以访问的SSH服务器
环境变量
SSH_SERVER(必填):user@host或hostSSH_PORT(可选,默认22)SSH_KEY(可选):私钥路径SSH_PASSPHRASE或SSH_KEY_PASSPHRASE(可选):私钥密码SSH_PASSWORD(可选):密码验证(也用于键盘交互)SSH_USER(可选):用户名SSH_SERVER不包括user@
身份验证优先级很简单:如果 SSH_KEY 如果已设置,则包含其密钥认证;如果 SSH_PASSWORD 已设置,包括密码验证。必须至少提供一个。
构建
go build -o ssh-mcp-go .运行(stdio)
SSH_SERVER=user@host \
SSH_PORT=22 \
SSH_KEY=~/.ssh/id_rsa \
SSH_PASSPHRASE=your_passphrase \
./ssh-mcp-go工具使用(示例)
从MCP客户端,使用以下参数调用工具:
ssh_exec
- command (字符串)
ssh_upload
- local_path (字符串) - remote_path (字符串)
ssh_download
- remote_path (字符串) - local_path (字符串)
ssh_exec_dynamic
- server (字符串、主机或user@host) - user (字符串,如果服务器没有用户@,则必需) - port (int,可选) - password (字符串,可选) - key_path (字符串,可选) - passphrase (字符串,可选) - command (字符串)
备注
- 未强制执行主机密钥验证(使用
InsecureIgnoreHostKey). - 目录传输是递归的。
