SSH操作服务

一个用于执行SSH远程命令、文件上传下载的服务,支持动态SSH参数调用。

  • by FrontMage
  • Go
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 FrontMage/ssh-mcp-go

使用说明

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 或 host
  • SSH_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).
  • 目录传输是递归的。