Skip to content

SSH/SFTP 工具

MyDeskBot Desktop 提供无缝的 SSH 和 SFTP 集成,让 AI 助手能够直接与远程服务器交互。

功能特性

SSH 功能

  • 执行远程命令
  • 在远程服务器上运行脚本
  • 监控服务器状态
  • 部署应用程序
  • 调试远程问题

SFTP 功能

  • 安全传输文件
  • 浏览远程目录
  • 编辑远程文件
  • 管理文件权限
  • 同步本地和远程目录

设置

1. 配置 SSH 连接

  1. 打开 MyDeskBot Desktop
  2. 进入 设置 → SSH/SFTP
  3. 点击"添加服务器"
  4. 填写连接详情:
    • 服务器地址/主机名
    • 端口(默认:22)
    • 用户名
    • 认证方式(密码或 SSH 密钥)

2. SSH 密钥认证(推荐)

为了更好的安全性,使用 SSH 密钥:

bash
# 生成新的 SSH 密钥(如果没有)
ssh-keygen -t ed25519 -C "mydeskbot"

# 将公钥复制到远程服务器
ssh-copy-id user@remote-server.com

然后在 MyDeskBot 中:

  1. 选择"SSH 密钥"作为认证方式
  2. 浏览到您的私钥文件
  3. 如果密钥有密码保护,输入密码短语

3. 测试连接

点击"测试连接"验证服务器是否可访问。

使用示例

远程命令执行

markdown
用户: "检查生产服务器的磁盘使用情况"

AI: [执行 SSH 命令]
ssh production "df -h"
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       50G   12G   36G  26% /

文件传输

markdown
用户: "将新构建上传到服务器"

AI: [通过 SFTP 传输文件]
sftp production
put dist/build.zip /var/www/releases/

远程脚本执行

markdown
用户: "在暂存环境运行数据库迁移脚本"

AI: [远程执行脚本]
ssh staging "cd /app && npm run migrate"

服务器监控

markdown
用户: "检查 CPU 和内存使用情况"

AI: [运行监控命令]
ssh server "top -bn1 | head -20"

部署应用

markdown
用户: "将最新版本部署到生产环境"

AI: [运行部署流程]
ssh production "cd /app && git pull && npm install && npm run build && pm2 restart all"

AI 集成

自然语言操作

AI 理解高级命令并将其转换为适当的 SSH/SFTP 操作:

markdown
用户: "备份数据库并下载备份文件"

AI: [执行多步骤操作]

1. ssh server "pg_dump mydb > backup.sql"
2. sftp server
3. get backup.sql ./backups/

错误处理

AI 自动处理常见问题:

  • 连接断开时自动重连
  • 重试失败的操作
  • 提供清晰的错误消息
  • 针对常见问题建议修复方法

安全

连接安全

  • 所有连接使用 SSH 协议(加密)
  • 凭证安全存储在密钥链中
  • 推荐使用 SSH 密钥而非密码

AI 安全

  • 破坏性命令需要明确确认
  • 文件删除需要批准
  • AI 无法在黑名单服务器上执行命令
  • 所有操作都被记录以供审计

最佳实践

  1. 使用 SSH 密钥:比密码更安全
  2. 限制权限:创建具有最小必需权限的用户
  3. 使用跳板主机:用于生产服务器
  4. 定期轮换:定期轮换 SSH 密钥
  5. 监控访问:定期查看 SSH 访问日志

高级功能

自定义命令

为常用命令创建快捷方式:

json
{
  "sshCommands": {
    "restart-nginx": "sudo systemctl restart nginx",
    "view-logs": "sudo journalctl -u myapp -f",
    "deploy": "/opt/scripts/deploy.sh"
  }
}

文件同步

自动同步本地和远程之间的目录:

markdown
用户: "将代码目录同步到服务器"

AI: [通过 SSH 运行 rsync]
rsync -avz --delete ./src/ user@server:/app/src/

多服务器操作

在多个服务器上执行相同命令:

markdown
用户: "检查所有 Web 服务器的 nginx 状态"

AI: [遍历服务器]
web-1: nginx 正在运行
web-2: nginx 正在运行
web-3: nginx 未运行 ⚠️

故障排除

连接被拒绝

  • 验证服务器正在运行
  • 检查 SSH 服务是否已启用
  • 确保防火墙允许 SSH
  • 验证正确的主机名/IP 和端口

认证失败

  • 验证用户名和密码
  • 检查 SSH 密钥权限(应为 600)
  • 确保公钥在 ~/.ssh/authorized_keys
  • 检查密钥密码短语问题

超时问题

  • 检查网络连接
  • 在配置中增加超时设置
  • 验证 DNS 解析
  • 检查网络延迟

权限被拒绝

  • 验证用户具有必要权限
  • 检查 sudo 要求
  • 确保命令路径在用户的 PATH 中
  • 检查 SELinux/AppArmor 策略

与其他工具集成

数据库工具

通过 SSH 隧道访问远程数据库:

markdown
用户: "通过 SSH 隧道连接生产数据库"

AI: [设置隧道并连接]
ssh -L 5432:localhost:5432 user@production

Git 集成

通过 SSH 部署:

markdown
用户: "将更改推送到远程仓库"

AI: [通过 SSH 执行 git push]
git push origin main

监控工具

设置自动监控:

markdown
用户: "监控服务器日志并在出现错误时提醒"

AI: [设置日志监控]
ssh server "tail -f /var/log/app.log | grep --line-buffered ERROR"

相关链接