SSH/SFTP 操作工具
MyDeskBot 通过内置的 remote_command_execution 工具提供强大的远程服务器管理功能,支持 SSH/SFTP 操作,使您能够直接从开发环境无缝地管理服务器。
注意:
remote_command_execution是 MyDeskBot 的内置工具,需要在工具配置中启用后才能使用。
会话使用示例
在聊天中直接使用 SSH 工具
用户可以直接在聊天中用自然语言请求 SSH 操作,MyDeskBot 会自动生成并执行相应的工具调用:
"请检查 production-web-01 服务器的磁盘使用情况和服务状态。"
MyDeskBot 会自动识别您的意图,并生成类似以下的工具调用(这个过程对用户透明):
# 大模型自动生成,用户无需关心
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 服务器上的数据库连接失败了,帮我检查一下数据库服务的状态和日志。"
📁 文件传输
安全地传输文件:
"将本地的配置文件上传到服务器,然后下载最新的日志文件进行分析。"
最佳实践
- 使用 SSH 密钥:优先使用密钥认证而不是密码
- 保护敏感信息:使用环境变量存储凭证
- 使用 SSH 配置:在
~/.ssh/config中预定义服务器连接 - 设置超时:为长时间运行的命令设置适当的超时时间
- 验证命令:在执行前验证命令的正确性
- 限制权限:为不同任务使用最小权限的用户账号
- 重用连接:启用连接重用以提高性能
附录:工具参数说明
remote_command_execution 工具支持以下参数,用户在对话中描述需求时,MyDeskBot 会自动解析并生成相应的工具调用:
| 参数 | 类型 | 说明 |
|---|---|---|
| serverName | string | 服务器主机名或 IP 地址 |
| username | string | SSH 用户名 |
| port | number | SSH 端口(默认:22) |
| password | string | SSH 密码(建议使用密钥认证) |
| keyPath | string | SSH 私钥文件路径 |
| commands | array | 要在远程服务器上执行的命令数组 |
| uploadFiles | array | 要上传到远程服务器的文件数组 |
| downloadFiles | array | 要从远程服务器下载的文件数组 |
| timeout | number | 命令执行超时时间,单位秒(默认:30) |
| captureOutput | boolean | 是否捕获并返回命令输出(默认:true) |
| maxFileSize | number | 操作的最大文件大小(字节,默认:104857600 = 100MB) |
| reuseConnection | boolean | 是否重用现有 SSH 连接(默认:true) |
文件上传/下载结构
上传文件:
uploadFiles:
- localPath: "/path/to/local/file"
remotePath: "/path/to/remote/file"
permissions: "644" # 可选下载文件:
downloadFiles:
- remotePath: "/path/to/remote/file"
localPath: "/path/to/local/file"使用示例
当您说 "帮我检查 web 服务器的状态" 时,MyDeskBot 会自动生成类似以下的内部调用(这个过程对您透明):
tool: "remote_command_execution"
args:
serverName: "web-server"
username: "admin"
keyPath: "/path/to/private/key"
commands:
- "uptime"
- "df -h"
- "systemctl status nginx"