Your Name f0b6a71a65 fix: Delete key in terminal deleting prompt text (root@host)
_on_delete() was missing _current_line_start check that _on_backspace
already had. Clicking into the prompt area (root@hostname:~#) and pressing
Delete would erase prompt characters. Now:
- Cursor before input line: moved to input start, no deletion
- Selection crossing prompt boundary: blocked
2026-07-29 06:40:37 +08:00

SSHClient

基于 PyQt5 + paramiko 的 Windows SSH 客户端,支持远程终端、SFTP 文件浏览、CPU/内存/磁盘/网络实时监控,以及 OpenAI 兼容的 AI Agent(可调用工具操作远程主机)。

main

功能特性

模块 说明
多主机管理 增删改查、密码/私钥双认证、配置导入导出、配置持久化到 ~/.sshclient/
远程终端 真实交互式 shellXshell 风格)、ANSI 颜色、本地历史、Ctrl+A/E/U/K/W 快捷键
命令片段 20+ 预置常用命令(ss/df/ps/docker/systemctl…),一键发送到终端,自定义增删改
SFTP 文件浏览 目录树浏览、上传/下载(带进度条)、新建目录、删除、重命名、双击进入
实时监控 CPU/内存/负载/启动时间/磁盘/网络速率/进程列表,1-10 秒可调刷新间隔
趋势迷你图 CPU 和内存使用率实时折线图,最近 60 个采样点,一目了然
进程管理 进程表(500 条)、搜索过滤、CPU/内存排序、树形视图、右键杀进程、批量操作
AI Agent OpenAI 兼容 APIOpenAI / DeepSeek / Moonshot / 通义千问 / Ollama 等),5 个工具自动调用
暗色主题 视图菜单一键切换暗/亮主题,偏好自动持久化
跨平台 代码兼容 Windows / macOS / LinuxPyQt5 + paramiko

📦 在 Windows 上构建 exe

最简单的方式:双击 build_windows.bat

  1. 安装 Python 3.10+(勾选 Add to PATH
  2. 把整个项目目录拷到 Windows 电脑
  3. 双击 build_windows.bat,等 2-3 分钟
  4. 产物:dist\SSHClient.exe(单文件,约 50-60 MB,可拷给任何人直接双击运行)

手动方式:

python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
pyinstaller build.spec --clean --noconfirm

🚀 在 Linux/macOS 上开发

./build.sh        # 一键打包当前平台二进制
python main.py    # 直接开发运行

🧪 测试

source venv/bin/activate
python test_core.py   # 核心模块 smoke test(无网络依赖)
python test_ui.py     # UI 组件加载测试(offscreen 渲染)
python test_e2e.py    # 端到端测试(需本机或可访问的 sshd)

🎮 使用说明

1. 添加主机

左侧 新增主机,填主机名/IP、端口、用户名、密码(可选私钥文件)。

2. 连接

选中主机 → 🔌 连接。状态指示器变绿后即可使用。

3. 终端

⌨ 终端 Tab 直接输入命令回车执行。支持 ANSI 颜色、↑↓ 历史回放、Ctrl+A/E/U/K/W 行编辑快捷键。

命令片段:工具栏下拉框选择预置命令(ss/df/ps/docker/systemctl 等),一键发送到终端。点击 ⚙ 管理自定义片段。

4. 文件浏览

📁 文件 Tab 双击目录进入,双击文件直接下载。可拖入 / 上传任意文件。

5. 监控

📊 监控 Tab 点击 开始监控,指标会按设定间隔刷新。CPU/内存用大字突出,下方有实时趋势折线图,磁盘用进度条,网络显示当前速率。下半区是进程管理表,支持搜索过滤、CPU/内存排序、树形视图、右键杀进程。

6. AI Agent

  1. 先点 ⚙ AI 设置,选择预设(OpenAI/DeepSeek/Kimi/通义千问/Ollama)或自定义填 API Key
  2. 回到 🤖 AI Agent Tab,用自然语言提问:
    • "帮我看 CPU 为什么这么高"
    • "找出 /var/log 下最大的 10 个文件"
    • "重启 nginx 服务"
  3. AI 会自动调用工具(执行命令、查指标等)并给出结论

安全提示:AI Agent 可以执行任意命令,请使用只读权限的 API Key,或在 prompt 中限定危险操作前需确认。

🔌 支持的 AI 提供商

预设 Base URL 模型
OpenAI https://api.openai.com/v1 gpt-4o-mini
DeepSeek https://api.deepseek.com/v1 deepseek-chat
Moonshot Kimi https://api.moonshot.cn/v1 moonshot-v1-8k
通义千问 https://dashscope.aliyuncs.com/compatible-mode/v1 qwen-turbo
智谱 GLM https://open.bigmodel.cn/api/paas/v4 glm-4-flash
Ollama (本地) http://127.0.0.1:11434/v1 qwen2.5:7b
自定义 - 任意 OpenAI 兼容端点

📂 项目结构

sshclient/
├── main.py                # 入口
├── requirements.txt       # 依赖
├── build.spec             # PyInstaller 打包配置
├── build_windows.bat      # Windows 一键打包
├── build.sh               # Linux/macOS 打包
├── core/                  # 业务逻辑
│   ├── ssh_client.py      # SSH 连接 + SFTP
│   ├── monitor.py         # 远程系统监控
│   ├── ai_agent.py        # AI Agent (OpenAI 兼容)
│   ├── manager.py         # 多主机管理 + 配置持久化
│   └── snippets.py        # 命令片段管理 + 持久化
├── ui/                    # PyQt5 界面
│   ├── main_window.py     # 主窗口
│   ├── widgets.py         # FileBrowser / MonitorPanel / SparklineChart / AIChatPanel
│   ├── terminal_panel.py  # 交互式终端面板
│   ├── host_dialog.py     # 主机编辑对话框
│   ├── config_dialog.py   # AI 设置对话框
│   ├── snippet_dialog.py  # 命令片段管理对话框
│   ├── theme.py           # 亮色/暗色主题 QSS
│   └── workers.py         # 后台线程
└── test_*.py              # 测试脚本

🔧 故障排查

问题 解决
python 不识别 安装 Python 时勾选 "Add Python to PATH"
打包失败 ModuleNotFoundError pip install <module> 后重新打包
exe 启动黑窗闪过 已用 console=False,如还出现请检查杀毒软件
SSH 连接超时 检查防火墙、22 端口、目标主机 sshd 是否运行
AI 设置测试连接失败 检查 API Key 是否正确、Base URL 是否可访问、代理设置

📄 License

MIT

S
Description
No description provided
Readme 361 KiB
2026-07-28 22:01:14 +08:00
Languages
Python 98.5%
Batchfile 0.9%
Shell 0.6%