Files
opsxshell/docs/user-guide.md
T

120 lines
7.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 使用指南
## 快速连接
按 `Cmd/Ctrl + K`,输入 `user@host` 或 `user@host:port` 后连接。默认端口为 `22`。快速连接适合临时使用,不会自动保存会话。
需要长期使用时新建保存会话,选择密码或私钥认证,并按需设置分组、标签和启动命令。未填写密码或私钥的导入会话会尝试本机 SSH Agent 和常见默认密钥。
安装版支持系统链接,例如:
```text
ssh://root@opsbase.cn:55555
```
点击后会唤起 OpsXShell,并打开已填好目标的快速连接窗口。为了避免网页静默连接陌生服务器,仍需用户确认连接;链接中禁止携带密码、远程路径、查询参数或片段。
## 代理与跳板
会话的高级选项支持:
- HTTP CONNECT 代理
- SOCKS5 代理
- 可选代理用户名和密码
- 选择一个已保存会话作为跳板机
代理和跳板互斥,选择其中一个会清除另一个,避免连接路径含糊。界面保持单跳操作;Rust 连接层可处理已有配置中的最多 8 跳链。
## 端口转发与 SOCKS5
端口转发页面支持本地转发、远程转发和动态 SOCKS5。普通用户可直接点击“启动 SOCKS5”,默认创建:
```text
socks5://127.0.0.1:1080
```
- 启动后卡片显示真实绑定端口、活动连接数和上下行流量。
- 复制按钮复制 `socks5://127.0.0.1:<端口>`。需要远程 DNS 解析的命令行工具应使用 `socks5h`,例如 `curl --proxy socks5h://127.0.0.1:1080 https://example.com`。
- “停止”会关闭 Rust Listener,不是只改界面图标。删除运行中的规则会先停止再删除。
- “复制规则”会创建独立的新规则,便于只修改端口或目标;不会复制原规则的运行状态。
- 运行中的规则选择“编辑”时,会先提示停止真实监听,再允许保存新配置。
- 保存的是规则,不是“运行中”状态;应用重启后需要用户再次启动。
- SOCKS5 默认仅监听本机,当前不提供局域网开放和客户端密码认证。
## 导入 OpenSSH 配置
从应用菜单选择“文件 > 导入会话”,打开 `~/.ssh/config`。当前解析以下常用字段:
- `Host`
- `HostName`
- `User`
- `Port`
- `IdentityFile`
- 单个 `ProxyJump` 别名
包含 `*`、`?` 或 `!` 的 Host 模式不会生成会话。导入后请检查目标、用户名、密钥路径和跳板关系再连接。
会话导出为 JSON,不包含密码、私钥口令或代理密码;私钥路径会保留,便于在同一台电脑恢复配置。
## SFTP
SFTP 使用双栏文件管理器。上传和下载先写入 `.opsx-part` 临时文件,中断后再次传输同一路径会从已有字节继续。传输完成并通过大小校验后才替换正式文件,因此失败传输不会伪装成完整文件。
- 上传:在左侧本地栏选中文件后点击“上传”;未选择文件时点击“上传”会打开系统原生文件选择器。
- 下载:在右侧远程栏选中文件后点击“下载”。下载按钮在未选择远程文件时保持禁用。
- 文件右键菜单也提供对应的“上传”或“下载”操作。
- 可直接把左侧本地文件拖到右侧远程栏上传,也可把右侧远程文件拖到左侧本地栏下载;拖到目录行时以该目录为目标,并显示落点高亮。
- 当前拖拽只支持单个文件,不递归传输目录;同侧拖拽不会执行移动或重命名。
- 远程文本编辑的“打开/保存”直接读写远程文件,不会在本地创建同名文件,也不等同于上传或下载。
- 传输失败会在传输队列和界面通知中显示 Rust/SFTP 返回的具体原因。
当前目标文件采用覆盖语义。内容哈希校验和显式冲突选择仍在路线图中。
## 终端与批量命令
- `Cmd/Ctrl + D`:分屏当前终端
- `Cmd/Ctrl + W`:关闭当前标签
- 会话侧栏进入批量模式后,可同时打开终端、SFTP,或在多个主机执行同一条命令
- 如果远端 Bash 因 `TMOUT` 显示 `timed out waiting for input: auto-logout`,OpsXShell 会标记只有该 Shell/分屏退出。SSH 连接、其他分屏、SFTP 和隧道仍可用,点击“重新打开 Shell”即可继续。
批量命令结果只保留在当前弹窗。OpsXShell 不持久化终端命令历史。
## 本地终端与串口
快速启动入口可打开系统默认 Shell。串口入口会列出系统设备,可设置波特率、数据位、停止位和校验方式后连接终端设备。
## 大模型设置与终端助手
在“设置 → 大模型”中添加 Provider。内置预设包含 DeepSeek、Z.AI/GLM、MiniMax、Kimi、Qwen、OpenAI、Anthropic、OpenRouter、Ollama 和 new-api;也可以从空白配置开始。
1. 选择供应商预设或“自定义”。新配置只在当前表单中暂存。
2. 选择模型,核对 Endpoint,输入 API Key。协议和 HTTP 开关位于默认收起的“高级设置”。
3. 点击“测试连接”。Rust 使用当前表单实际向目标模型发送“你是什么模型?请简短回答。”,但不会保存 Provider 或 API Key。只有服务返回成功状态且回答非空时界面才显示 `HTTP 200`。
4. 测试成功后“保存”按钮才会启用。Endpoint、模型、协议或凭据变化后,测试结果立即失效,必须重新测试。
5. 保存时 API Key 进入 Rust 加密存储,普通设置 JSON 不包含明文,界面重新打开后也不会回显。
预设模型参考 models.dev 与各供应商兼容接口维护。new-api、One API、OpenRouter 等网关使用“自定义”或相应预设,填写自己的 `/v1` Endpoint 和实际模型 ID。
终端工具栏点击“AI 助手”打开 Agent CLI:
- 直接输入任务,例如“排查 nginx 为什么启动失败并修复”。回车发送,`Shift+回车` 换行;不需要先选“解释 / 生成命令 / 排障 / 执行”。
- 有终端选区时会作为初始上下文;没有选区时不抓取整屏,Agent 通过真实 `ssh-exec` 自主取证。
- Agent 最多执行 8 步。每步只能准备一条单行命令,界面会显示当前主机、命令和五级风险;你确认后才真实执行。
- 格式化磁盘、删除根目录等 critical 命令会被硬拒绝,不提供确认放行。相同命令第 3 次会在执行前拦截。
- 执行后的真实输出和退出码会回给 AI,用于判断下一步或收敛结论。连续失败时 Agent 会被要求换方法。
- 长输出由本地 `analyze_output` 提取错误行并保留首尾;Rust 在发给云模型前做常见敏感信息脱敏。
- 关闭面板后任务、命令、工具输出和回答全部清空,不写入历史。
- 不提供独立 podexec。远程服务器已有的 `kubectl`、`helm`、`docker` 等工具都通过同一 SSH 执行链使用,避免额外管理本机 kubeconfig 和执行目标。
云模型会把所选上下文发给相应供应商;有严格数据边界时使用本机 Ollama,并仅在可信本机上开启 HTTP。OpsXShell 不保存 AI 对话、终端上下文或长期记忆。
## 本地数据
设置“关于”页会显示当前系统的实际数据路径。会话密码、私钥口令、代理密码和大模型 API Key 使用 AES-256-GCM 加密。主密钥位于:
```text
~/.opsxshsell/master.key
```
Unix 系统中目录权限为 `0700`,密钥文件权限为 `0600`。主机信任记录使用 `~/.ssh/known_hosts`。