Skip to content

SSH/SFTP 操作工具

MyDeskBot 通过内置的 remote_command_execution 工具提供强大的远程服务器管理功能,支持 SSH/SFTP 操作,使您能够直接从开发环境无缝地管理服务器。

注意remote_command_execution 是 MyDeskBot 的内置工具,需要在工具配置中启用后才能使用。

会话使用示例

在聊天中直接使用 SSH 工具

用户可以直接在聊天中用自然语言请求 SSH 操作,MyDeskBot 会自动生成并执行相应的工具调用:

"请检查 production-web-01 服务器的磁盘使用情况和服务状态。"

MyDeskBot 会自动识别您的意图,并生成类似以下的工具调用(这个过程对用户透明):

yaml
# 大模型自动生成,用户无需关心
tools:
  - name: "server-health-check"
    tool: "remote_command_execution"
    args:
      serverName: "production-web-01"
      username: "admin"
      keyPath: "/path/to/private/key"
      commands:
        - "df -h"
        - "systemctl status nginx"
        - "systemctl status docker"
        - "free -h"

凭证管理

当服务器需要认证时,您可以在对话中直接提供凭证,或者让 MyDeskBot 使用您的 ~/.ssh/config 配置:

"连接到生产服务器 production-server(使用 ~/.ssh/config 中的配置),检查一下 Web 服务的运行状态。"

或者直接提供凭证:

"使用 SSH 连接到 192.168.1.100,用户名是 admin,私钥路径是 ~/.ssh/id_rsa,检查系统状态。"

建议:优先使用 ~/.ssh/config 配置服务器连接,这样可以避免在对话中重复输入凭证。

快速开始

基本命令执行

只需用自然语言描述您的需求:

"帮我检查一下 web 服务器的系统负载和内存使用情况。"

MyDeskBot 会自动生成相应的命令并执行。

文件传输

"将 deploy.sh 脚本上传到 staging 服务器,并设置执行权限。"

使用 SSH 配置

"连接到 ~/.ssh/config 中配置的 dev-server,看看有哪些服务在运行。"

高级用法

系统监控

"帮我监控一下 production 服务器的系统状态,包括 CPU、内存、磁盘和网络使用情况,还有最近的错误日志。"

批量部署

"将新的配置文件上传到所有 web 服务器,然后重载 Nginx 服务,最后验证服务状态。"

日志分析

"帮我查看一下 app-server 上的应用日志,找一下最近一小时内有哪些错误和警告。"

文件备份

"从 db-server 下载最新的备份文件,然后上传到备份服务器。"

使用场景

🔐 服务器管理

直接用自然语言管理远程服务器:

"重启一下所有 web 服务器上的 Nginx 服务,然后检查服务状态。"

📊 系统监控

监控服务器性能和状态:

"帮我检查一下集群中所有节点的健康状态和资源使用情况。"

🚀 自动化部署

执行部署和配置管理:

"将新版本的代码部署到 staging 环境,运行迁移脚本,然后验证服务是否正常。"

🔍 故障排查

快速定位和解决问题:

"production 服务器上的数据库连接失败了,帮我检查一下数据库服务的状态和日志。"

📁 文件传输

安全地传输文件:

"将本地的配置文件上传到服务器,然后下载最新的日志文件进行分析。"

最佳实践

  1. 使用 SSH 密钥:优先使用密钥认证而不是密码
  2. 保护敏感信息:使用环境变量存储凭证
  3. 使用 SSH 配置:在 ~/.ssh/config 中预定义服务器连接
  4. 设置超时:为长时间运行的命令设置适当的超时时间
  5. 验证命令:在执行前验证命令的正确性
  6. 限制权限:为不同任务使用最小权限的用户账号
  7. 重用连接:启用连接重用以提高性能

附录:工具参数说明

remote_command_execution 工具支持以下参数,用户在对话中描述需求时,MyDeskBot 会自动解析并生成相应的工具调用:

参数类型说明
serverNamestring服务器主机名或 IP 地址
usernamestringSSH 用户名
portnumberSSH 端口(默认:22)
passwordstringSSH 密码(建议使用密钥认证)
keyPathstringSSH 私钥文件路径
commandsarray要在远程服务器上执行的命令数组
uploadFilesarray要上传到远程服务器的文件数组
downloadFilesarray要从远程服务器下载的文件数组
timeoutnumber命令执行超时时间,单位秒(默认:30)
captureOutputboolean是否捕获并返回命令输出(默认:true)
maxFileSizenumber操作的最大文件大小(字节,默认:104857600 = 100MB)
reuseConnectionboolean是否重用现有 SSH 连接(默认:true)

文件上传/下载结构

上传文件

yaml
uploadFiles:
  - localPath: "/path/to/local/file"
    remotePath: "/path/to/remote/file"
    permissions: "644" # 可选

下载文件

yaml
downloadFiles:
  - remotePath: "/path/to/remote/file"
    localPath: "/path/to/local/file"

使用示例

当您说 "帮我检查 web 服务器的状态" 时,MyDeskBot 会自动生成类似以下的内部调用(这个过程对您透明):

yaml
tool: "remote_command_execution"
args:
  serverName: "web-server"
  username: "admin"
  keyPath: "/path/to/private/key"
  commands:
    - "uptime"
    - "df -h"
    - "systemctl status nginx"