docs: update README and user guides to enhance clarity on Dragonfly's features, session types, and terminal capabilities; add new sections for workspace layout, security, and network configurations
This commit is contained in:
1 parent
2bb5cb0d5f
commit
5e1e592d87
13 files changed
+1280
-363
No files matched your search
@@ -1,86 +1,124 @@
|
||||
<div align="center">
|
||||
<img src="./public/dragonfly.svg" alt="Dragonfly Logo" width="100" height="100">
|
||||
<h3>Dragonfly is a modern, high-performance SSH client</h3>
|
||||
<h3>Dragonfly is a modern remote terminal workspace built with Tauri and Rust</h3>
|
||||
</div>
|
||||
|
||||
## ✨ Features
|
||||
## Overview
|
||||
|
||||
- **🚀 Robust SSH Client**: Secure and fast SSH connections powered by Rust's `russh`.
|
||||
- **📑 Multi-Tab Interface**: Manage multiple active sessions simultaneously in a tabbed interface.
|
||||
- **💾 Session Management**: Save, organize, and edit your frequently used server connections for quick access.
|
||||
- **📂 Integrated File Explorer**: Browse, upload, and download files on your remote servers directly from the sidebar.
|
||||
- **📜 Command History**: Automatically save and easily access your command history.
|
||||
- **⚡ Quick Commands**: store and execute your most frequent commands with a single click.
|
||||
- **🎨 Customizable UI**: Resizable panels for File Explorer, Saved Connections, and Command History to fit your workflow.
|
||||
- **🌗 Theme Support**: Fully supported Dark and Light modes.
|
||||
- **🖥️ Cross-Platform**: Optimized for Windows, macOS, and Linux.
|
||||
Dragonfly is a desktop client for SSH-centric operations and mixed terminal workflows. It combines a React + Tauri interface with a Rust backend so you can manage remote hosts, local shells, file transfers, authentication, and network tooling from one workspace.
|
||||
|
||||
## 🛠️ Tech Stack
|
||||
## Highlights
|
||||
|
||||
- **Frontend**: [React 19](https://react.dev/), [TypeScript](https://www.typescriptlang.org/), [Vite](https://vitejs.dev/), [TailwindCSS 4](https://tailwindcss.com/)
|
||||
- **Backend**: [Tauri 2](https://tauri.app/), [Rust](https://www.rust-lang.org/)
|
||||
- **Terminal**: [xterm.js](https://xtermjs.org/)
|
||||
- **Icons**: [Material Icons](https://fonts.google.com/icons)
|
||||
### Sessions and workspace
|
||||
|
||||
## 🚀 Getting Started
|
||||
- SSH, Local Terminal, Telnet, and Serial session support
|
||||
- Multi-tab workspace with horizontal and vertical pane splits
|
||||
- Saved connections with folders, icons, duplication, reconnect, and import tools
|
||||
- Child windows for settings, new-session, quick-command, and auto-upload flows
|
||||
|
||||
### Terminal experience
|
||||
|
||||
- Search bar, command history, fuzzy suggestions, and context actions
|
||||
- Optional line numbers and timestamps gutter for dense terminal output
|
||||
- Optional action links for IPv4 addresses, `host:port`, and archive filenames
|
||||
- Optional keyword highlighting with built-in presets and custom rules
|
||||
- Session recording, configurable scrollback, and SSH keep-alive
|
||||
- Remote resource monitor for active SSH sessions
|
||||
|
||||
### Remote operations
|
||||
|
||||
- Built-in SFTP file explorer with upload, download, rename, move, delete, and properties
|
||||
- Transfer queue with retry, resume, timestamp preservation, and configurable concurrency
|
||||
- Open remote files in a local editor and upload changes back through the watcher flow
|
||||
- Quick Commands with categories, colors, icons, and variable prompts
|
||||
|
||||
### Security and networking
|
||||
|
||||
- Password auth, private keys, host-key verification, and local credential encryption
|
||||
- OTP management with TOTP/HOTP, QR import, and SSH auto-fill support
|
||||
- Screen lock, master password support, and known-hosts management
|
||||
- Proxy configs, SSH jump hosts, and local / remote / dynamic tunnels
|
||||
|
||||
## Supported session types
|
||||
|
||||
| Type | Typical use | Notes |
|
||||
|------|-------------|-------|
|
||||
| SSH | Linux / Unix remote servers | Supports SFTP, OTP, resource monitor, proxy, jump host, tunnels |
|
||||
| Local Terminal | Local shell workflows | Uses your local shell path and working directory |
|
||||
| Telnet | Legacy network devices / lab systems | Lightweight terminal session without SSH-only features |
|
||||
| Serial | Routers, boards, embedded devices | Configurable port, baud rate, parity, stop bits |
|
||||
|
||||
## Documentation map
|
||||
|
||||
The detailed user docs live in `docs-site/`.
|
||||
|
||||
- Product overview: [docs-site/docs/intro.md](docs-site/docs/intro.md)
|
||||
- Quick start: [docs-site/docs/getting-started/quick-start.md](docs-site/docs/getting-started/quick-start.md)
|
||||
- Guides: [docs-site/docs/guide/](docs-site/docs/guide)
|
||||
- Development docs: [docs-site/docs/development/](docs-site/docs/development)
|
||||
|
||||
## Screenshot placeholders
|
||||
|
||||
If you want to add screenshots later, these are the recommended stable asset paths to use in the docs site:
|
||||
|
||||
- `docs-site/static/img/docs/readme/main-workspace.png` — main workspace with split panes and both side panels
|
||||
- `docs-site/static/img/docs/readme/session-types.png` — new-session window showing SSH / Local / Telnet / Serial tabs
|
||||
- `docs-site/static/img/docs/readme/terminal-features.png` — gutter, action links, and highlight demo output
|
||||
- `docs-site/static/img/docs/readme/network-and-security.png` — proxy / tunnel / OTP related UI
|
||||
|
||||
## Tech stack
|
||||
|
||||
| Layer | Technology |
|
||||
|------|------------|
|
||||
| Frontend | React 19, TypeScript, Vite, TailwindCSS 4 |
|
||||
| Desktop runtime | Tauri 2 |
|
||||
| Backend | Rust |
|
||||
| Terminal | xterm.js |
|
||||
| SSH | russh |
|
||||
| File transfer | russh-sftp |
|
||||
|
||||
## Getting started
|
||||
|
||||
### Prerequisites
|
||||
|
||||
Ensure you have the following installed on your machine:
|
||||
|
||||
- **Node.js**: v18 or newer recommended.
|
||||
- **Rust**: The latest stable version (via [rustup](https://rustup.rs/)).
|
||||
- **Tauri CLI**: (Optional) `npm install -g @tauri-apps/cli`.
|
||||
- Node.js 18+
|
||||
- Rust stable via [rustup](https://rustup.rs/)
|
||||
- pnpm recommended
|
||||
|
||||
### Installation
|
||||
|
||||
1. **Clone the repository**:
|
||||
```bash
|
||||
git clone https://github.com/yourusername/dragonfly.git
|
||||
cd dragonfly
|
||||
```
|
||||
```bash
|
||||
git clone https://git.coderkang.top/Tauri/dragonfly.git
|
||||
cd dragonfly
|
||||
pnpm install
|
||||
```
|
||||
|
||||
2. **Install dependencies**:
|
||||
```bash
|
||||
npm install
|
||||
# or
|
||||
pnpm install
|
||||
# or
|
||||
yarn install
|
||||
```
|
||||
|
||||
### 💻 Development
|
||||
|
||||
Start the development server with hot-module replacement (HMR):
|
||||
### Run the app in development
|
||||
|
||||
```bash
|
||||
npm run tauri dev
|
||||
# or
|
||||
pnpm tauri dev
|
||||
# or
|
||||
yarn tauri dev
|
||||
```
|
||||
|
||||
This will start the Vite dev server and launch the Tauri application window.
|
||||
|
||||
### 📦 Build
|
||||
|
||||
Build the application for production:
|
||||
### Run the docs site locally
|
||||
|
||||
```bash
|
||||
npm run tauri build
|
||||
# or
|
||||
pnpm tauri build
|
||||
# or
|
||||
yarn tauri build
|
||||
pnpm --dir docs-site start
|
||||
```
|
||||
|
||||
The build artifacts will be located in `src-tauri/target/release/bundle`.
|
||||
### Build
|
||||
|
||||
## 🤝 Contributing
|
||||
```bash
|
||||
pnpm build
|
||||
pnpm tauri build
|
||||
pnpm --dir docs-site build
|
||||
```
|
||||
|
||||
Contributions are welcome! Please feel free to submit a Pull Request.
|
||||
The desktop bundles are generated under `src-tauri/target/release/bundle`.
|
||||
|
||||
## 📄 License
|
||||
## Contributing
|
||||
|
||||
Please read the docs under [docs-site/docs/development/](docs-site/docs/development) before contributing.
|
||||
|
||||
## License
|
||||
|
||||
[MIT](LICENSE)
|
||||
+89
-48
@@ -4,84 +4,125 @@ sidebar_position: 100
|
||||
|
||||
# 常见问题
|
||||
|
||||
## 连接问题
|
||||
## 会话与连接
|
||||
|
||||
### SSH 连接超时怎么办?
|
||||
### SSH 能连,本地终端 / Telnet / 串口为什么行为不一样?
|
||||
|
||||
1. 检查服务器地址和端口是否正确
|
||||
2. 确认服务器的 SSH 服务是否正在运行
|
||||
3. 检查防火墙是否允许 SSH 端口
|
||||
4. 如果使用代理,确认代理配置是否正确
|
||||
5. 尝试增加 Keep-Alive 间隔(**设置 → 终端 → Keep-Alive 间隔**)
|
||||
因为 Dragonfly 支持多种会话类型,但能力并不完全相同:
|
||||
|
||||
### 连接后终端没有响应?
|
||||
- **SSH**:功能最完整,支持 SFTP、OTP、资源监控、代理、跳板机、隧道
|
||||
- **本地终端**:只负责本地 shell 工作流
|
||||
- **Telnet**:轻量远程终端,不包含 SSH 专属能力
|
||||
- **串口**:用于串口调试,不属于 SSH 网络链路
|
||||
|
||||
- 尝试按 `Enter` 键
|
||||
- 检查用户认证是否成功
|
||||
- 查看应用日志(**帮助 → 查看日志**)
|
||||
如果你希望使用文件浏览器、远程资源监控或 OTP,请确认当前打开的是 **SSH 会话**。
|
||||
|
||||
### 如何使用私钥连接?
|
||||
### 为什么某些会话没有文件浏览器?
|
||||
|
||||
1. 前往 **设置 → 安全 → 密钥管理**
|
||||
2. 点击 **添加密钥**,导入私钥文件
|
||||
3. 创建连接时,认证方式选择 **私钥**,然后选择对应的密钥
|
||||
文件浏览器基于 SFTP,因此只会在 **SSH 会话** 下可用。
|
||||
|
||||
以下类型不会提供远程文件浏览器:
|
||||
|
||||
- 本地终端
|
||||
- Telnet
|
||||
- 串口
|
||||
|
||||
### 为什么没有看到远程资源监控?
|
||||
|
||||
请同时检查两件事:
|
||||
|
||||
1. 当前标签是否为 **SSH 会话**
|
||||
2. 是否已在 **设置 → 终端** 中开启 **显示远程资源信息**
|
||||
|
||||
资源监控默认是关闭的。
|
||||
|
||||
### 串口列表为空怎么办?
|
||||
|
||||
先确认:
|
||||
|
||||
- 设备已经连接到系统
|
||||
- 当前系统已经识别该串口
|
||||
- 串口未被其他工具独占
|
||||
|
||||
切换到串口标签并重新展开端口下拉时,Dragonfly 会重新加载可用串口列表。
|
||||
|
||||
## 终端体验
|
||||
|
||||
### 为什么动作链接不能点击?
|
||||
|
||||
通常有两种原因:
|
||||
|
||||
1. 你还没有在 **设置 → 终端** 中启用 **动作链接**
|
||||
2. 点击时没有使用 **Ctrl / Cmd + 点击**
|
||||
|
||||
动作链接默认关闭,而且为了避免误触,打开链接时需要配合修饰键。
|
||||
|
||||
### 为什么看不到关键词高亮?
|
||||
|
||||
关键词高亮默认关闭。请先到 **设置 → 终端** 中启用它,再确认当前输出里确实包含可匹配的文本。
|
||||
|
||||
### 为什么行号和时间戳没有显示?
|
||||
|
||||
这两项也都是按需开启的可选增强项,需要在 **设置 → 终端** 中分别打开。
|
||||
|
||||
## 文件传输
|
||||
|
||||
### 上传/下载速度慢?
|
||||
### 打开远程文件后,为什么没有弹出自动上传提示?
|
||||
|
||||
Dragonfly 使用管道化传输优化了大文件传输速度。如果速度仍然不理想,可能是网络带宽限制。
|
||||
自动上传提示只会在下面这种流程里出现:
|
||||
|
||||
### 无法删除文件?
|
||||
1. 你从 SSH 文件浏览器中对远程文件执行 **打开**
|
||||
2. Dragonfly 下载该文件到本地临时目录并启动监听
|
||||
3. 你在本地编辑器里保存这个文件
|
||||
|
||||
检查当前用户是否有该文件的删除权限。可在文件属性中查看权限信息。
|
||||
如果你是自己另外复制了一个文件再编辑,Dragonfly 不会知道它和远端文件之间的关系。
|
||||
|
||||
## 界面问题
|
||||
### 文件浏览器为什么没有跟着 `cd` 自动切换目录?
|
||||
|
||||
### 界面字体显示异常?
|
||||
自动跟随依赖会话的终端路径跟踪能力。如果当前会话不支持,自动同步会被关闭;这时你仍然可以手动执行同步。
|
||||
|
||||
1. 前往 **设置 → 外观 → 字体系列**
|
||||
2. 确认首选字体已正确安装
|
||||
3. 添加备选字体作为回退
|
||||
### 上传 / 下载保存到哪里?
|
||||
|
||||
### 终端渲染卡顿?
|
||||
取决于你的传输设置:
|
||||
|
||||
尝试在 **设置 → 终端** 中:
|
||||
- 开启或关闭 **硬件加速**(需要重启应用)
|
||||
- 减少 **回滚缓冲区** 行数
|
||||
- 如果启用了“每次询问保存位置”,每次下载都会让你选择路径
|
||||
- 否则会使用默认下载目录
|
||||
|
||||
### 如何重置界面布局?
|
||||
你也可以在设置里修改默认下载目录和默认编辑器。
|
||||
|
||||
通过菜单 **视图 → 重置面板布局** 恢复默认布局。
|
||||
## 安全与认证
|
||||
|
||||
## 安全相关
|
||||
### 锁屏后为什么不需要输入密码也能解锁?
|
||||
|
||||
### 忘记了主密码怎么办?
|
||||
这是因为你启用了锁屏,但**还没有设置主密码**。
|
||||
|
||||
主密码用于加密会话数据。如果忘记,需要删除 `~/.dragonfly/` 目录下的配置文件重新配置。
|
||||
当前实现中:
|
||||
|
||||
:::warning 注意
|
||||
删除配置文件将丢失所有已保存的连接和密钥。
|
||||
:::
|
||||
- 有主密码:锁屏后必须输入主密码
|
||||
- 没有主密码:可以直接点击解锁
|
||||
|
||||
### 忘记了锁屏密码怎么办?
|
||||
### 忘记主密码怎么办?
|
||||
|
||||
可以手动编辑 `~/.dragonfly/settings.json` 文件,将锁屏相关配置项重置。
|
||||
当前没有内建的“找回主密码”流程。如果本地数据已经受主密码保护,而你又无法提供正确密码,那么相关敏感配置将无法按原方式继续使用。
|
||||
|
||||
## 其他
|
||||
在手动处理前,建议先备份 `~/.dragonfly/` 目录,再决定如何重建本地配置。
|
||||
|
||||
### 如何导入其他 SSH 客户端的会话?
|
||||
### OTP 应该在哪里管理?
|
||||
|
||||
目前支持从 WindTerm 导入:
|
||||
请到 **Security/Auth** 面板中的 **OTP** 标签页统一管理;创建或编辑 SSH 连接时,再把某个 OTP 条目绑定到具体连接。
|
||||
|
||||
1. 右键点击侧边栏选择 **导入会话**
|
||||
2. 选择 WindTerm
|
||||
3. 选择 WindTerm 的会话配置文件
|
||||
## 导入与迁移
|
||||
|
||||
### 配置文件在哪里?
|
||||
### 可以从哪些客户端导入会话?
|
||||
|
||||
所有配置文件存储在 `~/.dragonfly/` 目录下,包括连接、密钥、设置等。
|
||||
目前支持:
|
||||
|
||||
### 如何查看应用日志?
|
||||
- Xshell(`.xts`)
|
||||
- MobaXterm(`.mxtsessions`)
|
||||
- WindTerm(`.sessions`)
|
||||
|
||||
通过菜单 **帮助 → 查看日志** 打开日志文件。日志按天轮转,保留最近 7 天的记录。
|
||||
导入后建议检查用户名、端口、认证方式,以及是否需要补充代理 / 跳板机 / OTP。
|
||||
|
||||
### Dragonfly 的配置文件存放在哪里?
|
||||
|
||||
应用配置位于 `~/.dragonfly/` 目录下,其中会保存设置、连接、密钥、OTP、隧道、代理、历史等本地数据。
|
||||
@@ -4,51 +4,95 @@ sidebar_position: 2
|
||||
|
||||
# 快速开始
|
||||
|
||||
本章将引导你完成第一个 SSH 连接的创建和使用。
|
||||
本章帮助你在最短路径内体验 Dragonfly 的核心工作流:创建连接、打开会话、使用分屏、查看文件、启用终端增强功能。
|
||||
|
||||
## 创建 SSH 连接
|
||||
## 第一步:选择会话类型
|
||||
|
||||
1. 点击左侧边栏中的 **新建连接** 按钮,或使用菜单 **文件 → 新建 SSH 连接**
|
||||
2. 在弹出的对话框中填写:
|
||||
- **连接名称** — 给连接取一个便于识别的名称
|
||||
- **主机** — 服务器的 IP 地址或域名
|
||||
- **端口** — SSH 端口,默认 22
|
||||
- **用户名** — 登录用户名
|
||||
- **认证方式** — 选择密码或私钥
|
||||
3. 点击 **保存** 保存连接配置
|
||||
点击 **新建连接**,你会看到四类可选会话:
|
||||
|
||||
## 连接服务器
|
||||
- **SSH** — 最完整的远程运维场景
|
||||
- **本地终端** — 直接在 Dragonfly 中打开本地 shell
|
||||
- **Telnet** — 适合旧系统或实验环境
|
||||
- **串口** — 适合串口调试设备
|
||||
|
||||
在左侧边栏的已保存连接列表中,双击连接名称或右键选择 **连接** 即可开始 SSH 会话。
|
||||
如果你只是第一次体验,建议优先创建一个 **SSH** 会话,再额外创建一个 **本地终端** 对比工作区效果。
|
||||
|
||||
连接成功后,你会在中央区域看到一个新的终端标签页。
|
||||
## 第二步:创建第一个 SSH 连接
|
||||
|
||||
## 基本操作
|
||||
在新建连接窗口中填写:
|
||||
|
||||
### 多标签管理
|
||||
- **连接名称** — 便于识别的显示名称
|
||||
- **主机** 与 **端口**
|
||||
- **用户名**
|
||||
- **认证方式** — 密码或私钥
|
||||
|
||||
- 你可以同时打开多个 SSH 连接,每个连接占一个标签页
|
||||
- 使用 `Ctrl+Tab` 切换标签页
|
||||
- 使用 `Ctrl+W` 关闭当前标签页
|
||||
如有需要,还可以展开高级区域配置:
|
||||
|
||||
### 文件浏览
|
||||
- 代理
|
||||
- 跳板机
|
||||
- OTP 绑定与自动填充
|
||||
- 图标、分组、描述等元数据
|
||||
|
||||
连接成功后,右侧文件浏览器会自动显示远程文件系统:
|
||||
保存后,连接会出现在已保存连接列表中。
|
||||
|
||||
- 浏览目录结构
|
||||
- 上传/下载文件
|
||||
- 右键菜单进行文件操作(重命名、删除、移动等)
|
||||
## 第三步:启动并理解工作区
|
||||
|
||||
### 命令历史
|
||||
双击已保存连接,或者右键选择连接,即可启动会话。
|
||||
|
||||
Dragonfly 会自动记录你输入的命令,你可以通过模糊搜索快速找到之前使用过的命令。
|
||||
连接建立后,你会看到:
|
||||
|
||||
## 创建本地终端
|
||||
- **中央区域** — 当前终端标签页
|
||||
- **左侧活动栏** — 文件浏览器、网络、Security/Auth 等面板入口
|
||||
- **右侧活动栏** — 已保存连接、活动会话、命令历史、资源监控等入口
|
||||
- **底部区域** — 快捷命令、串口发送、录制、锁屏等辅助区域
|
||||
|
||||
除了 SSH 连接,你还可以通过菜单 **终端 → 新建本地终端** 创建本地 Shell 会话。
|
||||
## 第四步:试试这些高频能力
|
||||
|
||||
## 下一步
|
||||
### 1. 再打开一个本地终端
|
||||
|
||||
- 了解 [SSH 连接管理](../guide/ssh-connection) 的更多选项
|
||||
- 学习使用 [SFTP 文件传输](../guide/file-transfer)
|
||||
- 配置 [快捷命令](../guide/quick-commands) 提升效率
|
||||
使用快捷键 ``Ctrl/Cmd + ` `` 或菜单入口创建本地终端,这样你可以在一个应用里同时看本地和远程环境。
|
||||
|
||||
### 2. 试一次终端分屏
|
||||
|
||||
在标签页上右键,选择:
|
||||
|
||||
- **水平分屏**
|
||||
- **垂直分屏**
|
||||
|
||||
这适合同时观察日志、执行命令和对照不同主机输出。
|
||||
|
||||
### 3. 打开远程文件浏览器
|
||||
|
||||
SSH 会话激活后,文件浏览器面板可直接浏览远程目录,并支持上传、下载、删除、移动、属性查看等操作。
|
||||
|
||||
### 4. 打开命令历史和快捷命令
|
||||
|
||||
- **命令历史** 适合回溯与模糊检索
|
||||
- **快捷命令** 适合保存固定操作,并支持变量输入
|
||||
|
||||
### 5. 启用终端增强项
|
||||
|
||||
可在 **设置 → 终端** 中按需打开:
|
||||
|
||||
- 行号
|
||||
- 时间戳
|
||||
- 动作链接
|
||||
- 关键词高亮
|
||||
- 远程资源监控
|
||||
|
||||
这些能力默认更偏保守,需要你按场景开启。
|
||||
|
||||
## 第五步:按你的场景继续深入
|
||||
|
||||
- 想了解不同会话差异:查看 [会话类型](../guide/session-types)
|
||||
- 想配置认证、代理、跳板机:查看 [SSH 连接管理](../guide/ssh-connection)
|
||||
- 想管理文件与自动回传:查看 [SFTP 文件传输](../guide/file-transfer)
|
||||
- 想了解终端增强与录制:查看 [终端功能](../guide/terminal)
|
||||
- 想配置 OTP:查看 [OTP 与认证](../guide/otp-and-auth)
|
||||
|
||||
:::tip 截图建议
|
||||
- 推荐图片路径:`/img/docs/session-types/new-session-tabs.png`
|
||||
- 建议展示内容:新建连接窗口中 SSH / 本地终端 / Telnet / 串口四个标签
|
||||
- 另一个推荐图片路径:`/img/docs/layout/quick-start-split-workspace.png`
|
||||
- 建议先执行:连接一个 SSH 会话,再新建一个本地终端并对标签页做一次分屏
|
||||
:::
|
||||
@@ -4,74 +4,126 @@ sidebar_position: 2
|
||||
|
||||
# SFTP 文件传输
|
||||
|
||||
Dragonfly 内置了功能完善的 SFTP 文件管理器,让你无需额外工具即可管理远程文件。
|
||||
Dragonfly 的远程文件能力建立在 SSH 会话之上。也就是说,**文件浏览器、SFTP 传输、远程文件本地编辑后回传** 都只在 SSH 会话中可用;本地终端、Telnet、串口不会显示这一套能力。
|
||||
|
||||
## 文件浏览器
|
||||
|
||||
连接 SSH 会话后,右侧边栏会显示远程文件浏览器:
|
||||
连接 SSH 会话后,文件浏览器面板可以直接浏览远程目录。
|
||||
|
||||
- 自动定位到用户主目录
|
||||
- 点击文件夹进入,点击上方 **返回上级** 按钮返回
|
||||
- 点击路径栏可直接输入路径跳转
|
||||
- 支持自动同步终端当前路径
|
||||
你会得到这些基础能力:
|
||||
|
||||
### 文件操作
|
||||
- 自动进入远端用户主目录
|
||||
- 进入文件夹、返回上级、手动输入路径跳转
|
||||
- 刷新当前目录
|
||||
- 与终端当前工作目录同步
|
||||
- 在不支持路径跟踪的会话中关闭自动同步
|
||||
|
||||
右键点击文件或文件夹,可执行以下操作:
|
||||
## 常见文件操作
|
||||
|
||||
在文件列表或右键菜单中,你可以执行:
|
||||
|
||||
| 操作 | 说明 |
|
||||
|------|------|
|
||||
| 打开 | 在默认编辑器中打开文件 |
|
||||
| 下载 | 下载文件到本地 |
|
||||
| 重命名 | 重命名文件或文件夹 |
|
||||
| 移动 | 将文件移动到指定路径 |
|
||||
| 删除 | 删除文件或文件夹(递归) |
|
||||
| 属性 | 查看文件详细信息 |
|
||||
| 复制路径 | 复制文件的完整路径 |
|
||||
| 打开 | 下载到本地临时目录后,用默认编辑器打开 |
|
||||
| 上传文件 | 选择本地文件上传到当前目录 |
|
||||
| 上传文件夹 | 整个目录上传到当前远端路径 |
|
||||
| 下载 | 下载单个文件或整个目录 |
|
||||
| 重命名 | 修改远端名称 |
|
||||
| 移动 | 把文件或目录移动到新路径 |
|
||||
| 删除 | 删除文件或目录 |
|
||||
| 属性 | 查看大小、时间、UID/GID、权限等信息 |
|
||||
| 新建文件 / 文件夹 / 符号链接 | 在当前目录中直接创建 |
|
||||
|
||||
### 新建文件和文件夹
|
||||
其中“打开”并不只是只读预览,而是为后续本地修改后回传做准备。
|
||||
|
||||
在工具栏中可以:
|
||||
## 上传与下载
|
||||
|
||||
- 新建文件
|
||||
- 新建文件夹
|
||||
- 新建符号链接
|
||||
### 上传
|
||||
|
||||
## 文件上传
|
||||
可通过工具栏或右键菜单把本地文件上传到当前目录。
|
||||
|
||||
点击工具栏的 **上传** 按钮,选择本地文件上传到当前目录。
|
||||
- 多个文件会逐个加入传输流程
|
||||
- 上传目录时会保留目录结构
|
||||
- 对 SSH 场景适合拿来同步脚本、配置文件或发布包
|
||||
|
||||
也可以通过右键菜单选择 **上传到当前文件夹**。
|
||||
### 下载
|
||||
|
||||
## 文件下载
|
||||
下载时有两种常见工作方式:
|
||||
|
||||
选中文件后,点击工具栏的 **下载** 按钮,或右键选择 **下载**。
|
||||
- 使用默认下载目录,直接保存到固定位置
|
||||
- 每次都询问保存位置,适合临时排障或按任务分类归档
|
||||
|
||||
Dragonfly 使用管道化传输技术,同时维持多个并发数据块读取,大幅提升大文件传输速度。
|
||||
目录下载与文件下载都支持,远端目录会落到你选择的本地目标目录中。
|
||||
|
||||
## 传输进度
|
||||
## 传输面板与传输设置
|
||||
|
||||
在右侧边栏的 **文件传输** 面板中,可以查看所有传输任务的实时进度:
|
||||
Dragonfly 会把上传 / 下载任务统一放进传输队列中,便于你查看:
|
||||
|
||||
- 传输中的文件名和进度
|
||||
- 已完成的传输
|
||||
- 传输错误
|
||||
- 当前进度
|
||||
- 成功与失败状态
|
||||
- 同时进行中的任务
|
||||
|
||||
可以一键清除已完成的传输记录。
|
||||
在设置中还可以按需调整传输相关策略,例如:
|
||||
|
||||
## 路径同步
|
||||
- 上传 / 下载线程数
|
||||
- 冲突时的处理策略
|
||||
- 是否保留时间戳
|
||||
- 是否继续断点传输
|
||||
- 默认下载路径
|
||||
- 默认打开远程文件所使用的本地编辑器
|
||||
|
||||
文件浏览器支持与终端路径同步:
|
||||
## 与终端路径同步
|
||||
|
||||
- **手动同步** — 点击同步按钮,将文件浏览器定位到终端当前目录
|
||||
- **自动同步** — 开启后,文件浏览器会自动跟随终端的工作目录变化
|
||||
文件浏览器可以和当前 SSH 终端的工作目录配合使用:
|
||||
|
||||
## 文件属性
|
||||
- **手动同步**:把浏览器直接跳到终端当前路径
|
||||
- **自动同步**:终端 `cd` 到新目录后,文件浏览器自动跟随
|
||||
|
||||
右键点击文件选择 **属性**,可查看:
|
||||
这对边跑命令边查文件非常有用,例如你在终端里进入某个发布目录后,文件浏览器会更容易保持在同一位置。
|
||||
|
||||
## 本地编辑后自动回传
|
||||
|
||||
这是 Dragonfly 很适合文档截图和真实运维场景的一项能力。
|
||||
|
||||
### 工作方式
|
||||
|
||||
1. 在 SSH 文件浏览器中对远程文件执行 **打开**
|
||||
2. Dragonfly 先把文件下载到本地临时目录
|
||||
3. 同时启动文件监听
|
||||
4. 你在本地编辑器里保存后,应用会弹出上传提示窗口
|
||||
|
||||
### 上传提示窗口
|
||||
|
||||
文件被修改后,你可以选择:
|
||||
|
||||
- **上传一次**
|
||||
- **始终上传**
|
||||
- **取消**
|
||||
|
||||
如果你对某个文件选择了“始终上传”,那么在**当前会话内**后续再次保存时会直接回传,不再重复询问。
|
||||
|
||||
### 适合的使用场景
|
||||
|
||||
- 修改远程配置文件
|
||||
- 调整部署脚本
|
||||
- 打开日志或状态文件做本地分析
|
||||
- 为文档准备“编辑后回传”的演示截图
|
||||
|
||||
## 文件属性与权限
|
||||
|
||||
在 **属性** 中可以查看:
|
||||
|
||||
- 文件大小
|
||||
- 修改时间和访问时间
|
||||
- 修改时间、访问时间
|
||||
- 所有者和组
|
||||
- 权限(用户/组/其他,八进制表示)
|
||||
- UID 和 GID
|
||||
- UID / GID
|
||||
- 权限的八进制表示
|
||||
|
||||
如果你的流程需要先核对权限再替换文件,这里会比单纯依赖 `ls -l` 更直观。
|
||||
|
||||
:::tip 截图建议
|
||||
- 推荐图片路径:`/img/docs/file-transfer/remote-file-browser.png`
|
||||
- 建议连接一个 SSH 会话后,在文件浏览器中展示目录树、工具栏与右键菜单
|
||||
- 另一个推荐图片路径:`/img/docs/file-transfer/auto-upload-dialog.png`
|
||||
- 建议先打开一个远程文本文件,再在本地编辑器中保存一次以触发自动上传提示
|
||||
:::
|
||||
@@ -4,44 +4,63 @@ sidebar_position: 8
|
||||
|
||||
# 快捷键
|
||||
|
||||
Dragonfly 提供丰富的快捷键支持,提升操作效率。
|
||||
Dragonfly 的快捷键分成两类理解最不容易混淆:
|
||||
|
||||
1. **应用级快捷键**:切换面板、开新会话、复制终端内容等
|
||||
2. **Shell 级按键**:直接发送给远端或本地 shell,例如常见的 `Ctrl+C`
|
||||
|
||||
如果你想复制终端里的文本,请优先使用 Dragonfly 的应用级快捷键,而不是假设 shell 里的快捷键会变成复制。
|
||||
|
||||
## 约定
|
||||
|
||||
- 下表中的 **Ctrl / Cmd** 表示:Windows / Linux 使用 `Ctrl`,macOS 使用 `Cmd`
|
||||
- `Ctrl+Tab` 与 `Ctrl+Shift+Tab` 保持当前实现写法
|
||||
|
||||
## 终端操作
|
||||
|
||||
| 快捷键 | 功能 |
|
||||
|--------|------|
|
||||
| `Ctrl+C` | 复制选中文本 / 发送中断信号 |
|
||||
| `Ctrl+V` | 粘贴 |
|
||||
| `Ctrl / Cmd + Shift + C` | 复制 |
|
||||
| `Ctrl / Cmd + Shift + V` | 粘贴 |
|
||||
| `Ctrl / Cmd + Shift + X` | 粘贴选中的文本 |
|
||||
| `Ctrl / Cmd + Shift + F` | 查找 |
|
||||
| `Ctrl / Cmd + Shift + K` | 清屏 |
|
||||
| `Ctrl / Cmd + Shift + A` | 全选 |
|
||||
|
||||
## 标签与会话
|
||||
## 标签与工作区
|
||||
|
||||
| 快捷键 | 功能 |
|
||||
|--------|------|
|
||||
| `Ctrl+Shift+N` | 新建 SSH 会话 |
|
||||
| `Ctrl+Shift+T` | 新建本地终端 |
|
||||
| `Ctrl+W` | 关闭当前标签 |
|
||||
| `Ctrl+Tab` | 下一个标签 |
|
||||
| `Ctrl+Shift+Tab` | 上一个标签 |
|
||||
| `Ctrl+1~9` | 切换到标签 1-9 |
|
||||
| `Ctrl / Cmd + Shift + N` | 新建会话 |
|
||||
| ``Ctrl / Cmd + ` `` | 新建本地终端 |
|
||||
| `Ctrl / Cmd + Shift + W` | 关闭当前标签 |
|
||||
| `Ctrl + Tab` | 切换到下一个标签 |
|
||||
| `Ctrl + Shift + Tab` | 切换到上一个标签 |
|
||||
| `Ctrl / Cmd + 1-9` | 跳转到指定标签 |
|
||||
|
||||
## 视图与布局
|
||||
## 视图与面板
|
||||
|
||||
| 快捷键 | 功能 |
|
||||
|--------|------|
|
||||
| `Ctrl+B` | 切换左侧边栏 |
|
||||
| `Ctrl+Shift+B` | 切换右侧边栏 |
|
||||
| `Ctrl++` | 放大 |
|
||||
| `Ctrl+-` | 缩小 |
|
||||
| `Ctrl+0` | 重置缩放 |
|
||||
| `F11` | 切换全屏 |
|
||||
| `Ctrl / Cmd + Shift + E` | 切换左侧活动栏 / 面板 |
|
||||
| `Ctrl / Cmd + Shift + B` | 切换右侧活动栏 / 面板 |
|
||||
| `Ctrl / Cmd + =` | 放大界面 |
|
||||
| `Ctrl / Cmd + -` | 缩小界面 |
|
||||
| `Ctrl / Cmd + 0` | 重置缩放 |
|
||||
|
||||
## 特殊功能
|
||||
|
||||
| 快捷键 | 功能 |
|
||||
|--------|------|
|
||||
| `Ctrl+,` | 打开设置 |
|
||||
| `Ctrl+L` | 锁定屏幕 |
|
||||
| `Ctrl / Cmd + Shift + L` | 锁定屏幕 |
|
||||
| `Ctrl / Cmd + ,` | 打开设置 |
|
||||
|
||||
## 使用建议
|
||||
|
||||
- 如果你经常在终端里复制日志,优先记住 `Ctrl / Cmd + Shift + C`
|
||||
- 如果你会同时管理远程与本地会话,`Ctrl / Cmd + Shift + N` 与 ``Ctrl / Cmd + ` `` 会是最常用的两个入口
|
||||
- 如果你使用锁屏功能,建议同时记住 `Ctrl / Cmd + Shift + L`
|
||||
|
||||
:::tip 提示
|
||||
快捷键可能因操作系统不同而有所差异。macOS 上 `Ctrl` 对应 `Cmd` 键。
|
||||
快捷键列表以当前设置页展示的实现为准。如果未来版本新增可配置快捷键,请以应用内设置中的“交互”页面为最新信息源。
|
||||
:::
|
||||
@@ -0,0 +1,140 @@
|
||||
---
|
||||
sidebar_position: 2
|
||||
---
|
||||
|
||||
# 工作区与布局
|
||||
|
||||
Dragonfly 的核心体验不是“单个终端标签页”,而是一个可组合的工作区:你可以同时打开多个会话、拆分多个窗格,并把常用面板固定在左右两侧。
|
||||
|
||||
## 工作区的组成
|
||||
|
||||
典型工作区由几部分组成:
|
||||
|
||||
- **中央区域**:标签页与终端窗格
|
||||
- **左侧活动栏 / 面板**:文件浏览器、网络、Security/Auth
|
||||
- **右侧活动栏 / 面板**:已保存连接、活动会话、命令历史、资源监控
|
||||
- **底部辅助区域**:快捷命令、串口发送、录制、锁定
|
||||
|
||||
这些区域不是固定死的单一页面,而是围绕当前活跃会话动态协作。
|
||||
|
||||
## 标签页
|
||||
|
||||
每个标签页都可以承载一个会话,也可以继续拆分成多个窗格。
|
||||
|
||||
你可以对标签页执行这些常见操作:
|
||||
|
||||
- 新建会话
|
||||
- 关闭当前标签
|
||||
- 在标签之间切换
|
||||
- 自定义标签名
|
||||
- 给标签设置颜色
|
||||
- 复制当前会话
|
||||
- 重新连接会话
|
||||
- 查看会话信息
|
||||
|
||||
这让 Dragonfly 很适合用来区分:
|
||||
|
||||
- 不同环境
|
||||
- 不同项目
|
||||
- 不同任务阶段
|
||||
|
||||
## 分屏能力
|
||||
|
||||
在标签页上右键,可以把当前会话拆成:
|
||||
|
||||
- **水平分屏**
|
||||
- **垂直分屏**
|
||||
|
||||
分屏后的窗格仍然属于同一个标签页,但每个窗格都能承载自己独立的会话内容。适合的场景包括:
|
||||
|
||||
- 一个窗格看日志,一个窗格执行命令
|
||||
- 并排比较两台主机状态
|
||||
- 左边本地终端,右边远程 SSH
|
||||
- 串口输出和 SSH 排障命令同时观察
|
||||
|
||||
## 会话与工作区的关系
|
||||
|
||||
工作区里有两个容易混淆的概念:
|
||||
|
||||
1. **逻辑标签页 / 窗格树**:决定一个标签内部如何分屏
|
||||
2. **运行时窗口布局**:决定不同标签当前挂在哪个工作区叶子位置
|
||||
|
||||
对普通使用者来说,可以简单理解成:
|
||||
|
||||
- 标签页负责组织任务
|
||||
- 分屏负责并排观察
|
||||
- 活动窗格决定当前命令发往哪里
|
||||
|
||||
## 左右侧面板
|
||||
|
||||
### 左侧
|
||||
|
||||
左侧更偏“能力入口”,通常包括:
|
||||
|
||||
- 文件浏览器
|
||||
- 网络
|
||||
- Security/Auth
|
||||
|
||||
### 右侧
|
||||
|
||||
右侧更偏“运行态信息”,通常包括:
|
||||
|
||||
- 已保存连接
|
||||
- 活动会话
|
||||
- 命令历史
|
||||
- 资源监控
|
||||
|
||||
如果你的工作流是“先选连接,再看运行状态”,这种左右分工会很自然。
|
||||
|
||||
## 底部辅助区域
|
||||
|
||||
工作区底部用于承载一些不适合一直占满侧栏的能力,例如:
|
||||
|
||||
- **快捷命令**:保存可复用命令片段并支持变量输入
|
||||
- **串口发送**:适合频繁向串口设备发固定文本
|
||||
- **录制**:开始或停止当前会话录制
|
||||
- **锁定**:快速锁屏
|
||||
|
||||
这也是 Dragonfly 和“普通多标签终端”差异较大的地方:它不是只让你开终端,而是把会话周边动作也组织到工作区里。
|
||||
|
||||
## 子窗口
|
||||
|
||||
某些操作会打开独立子窗口,而不是把所有内容都塞进主界面,例如:
|
||||
|
||||
- 设置
|
||||
- 新建连接
|
||||
- 快捷命令编辑
|
||||
- 自动上传提示
|
||||
|
||||
这样做的好处是:
|
||||
|
||||
- 不打断主工作区当前会话
|
||||
- 复杂配置可以独立完成
|
||||
- 演示和截图时结构更清晰
|
||||
|
||||
## 推荐的工作流组合
|
||||
|
||||
### 组合一:本地 + 远程
|
||||
|
||||
- 标签 1:SSH 登录远程主机
|
||||
- 标签 2:本地终端执行构建或 Git 命令
|
||||
- 右侧打开命令历史
|
||||
|
||||
### 组合二:双窗格排障
|
||||
|
||||
- 左窗格:实时日志
|
||||
- 右窗格:执行诊断命令
|
||||
- 再打开资源监控观察 CPU / 内存变化
|
||||
|
||||
### 组合三:文件 + 终端联动
|
||||
|
||||
- SSH 终端进入目标目录
|
||||
- 文件浏览器同步到当前路径
|
||||
- 打开远程文件,本地编辑后自动回传
|
||||
|
||||
:::tip 截图建议
|
||||
- 推荐图片路径:`/img/docs/layout/quick-start-split-workspace.png`
|
||||
- 建议展示一个 SSH 会话 + 一个本地终端的分屏工作区
|
||||
- 另一个推荐图片路径:`/img/docs/readme/main-workspace.png`
|
||||
- 建议同时包含左侧活动栏、右侧面板、中心终端与底部辅助区
|
||||
:::
|
||||
@@ -0,0 +1,109 @@
|
||||
---
|
||||
sidebar_position: 6
|
||||
---
|
||||
|
||||
# OTP 与认证
|
||||
|
||||
Dragonfly 把 OTP 管理和 SSH 认证流程结合在了一起:你既可以把 OTP 当作一个独立的验证码仓库来管理,也可以把它直接绑定到 SSH 连接中,减少重复输入。
|
||||
|
||||
## 支持的 OTP 类型
|
||||
|
||||
当前支持:
|
||||
|
||||
- **TOTP**
|
||||
- **HOTP**
|
||||
|
||||
创建或编辑 OTP 条目时,可以配置:
|
||||
|
||||
- issuer
|
||||
- username
|
||||
- secret
|
||||
- 算法(SHA-1 / SHA-256 / SHA-512)
|
||||
- 位数
|
||||
- 周期(TOTP)
|
||||
- 计数器(HOTP)
|
||||
|
||||
## 在哪里管理 OTP
|
||||
|
||||
请打开 **Security/Auth** 面板中的 **OTP** 标签页。
|
||||
|
||||
你可以在这里:
|
||||
|
||||
- 新建 OTP 条目
|
||||
- 编辑已有条目
|
||||
- 删除条目
|
||||
- 查看验证码
|
||||
- 从二维码图片导入
|
||||
|
||||
## 从二维码导入
|
||||
|
||||
如果你已经有 MFA / 2FA 的二维码,可以直接导入图片文件。
|
||||
|
||||
典型流程:
|
||||
|
||||
1. 在 OTP 面板中点击二维码导入
|
||||
2. 选择本地图片文件
|
||||
3. Dragonfly 解析后自动填充 issuer、username、secret 等信息
|
||||
4. 确认后保存为一个 OTP 条目
|
||||
|
||||
这比手动抄写 secret 更适合日常管理,也更适合批量整理认证资料。
|
||||
|
||||
## 绑定到 SSH 连接
|
||||
|
||||
在 SSH 连接表单的高级区域中,可以为连接选择一个已保存的 OTP 条目。
|
||||
|
||||
绑定后你可以:
|
||||
|
||||
- 在认证时快速查看当前验证码
|
||||
- 在支持的交互流程中启用 **自动填充 OTP**
|
||||
|
||||
这非常适合需要“密码 / 私钥 + 二次验证码”组合认证的环境。
|
||||
|
||||
## 认证弹窗中的 OTP 交互
|
||||
|
||||
当 SSH 服务器进入 keyboard-interactive / OTP 流程时,Dragonfly 会弹出 OTP 对话框。
|
||||
|
||||
对话框中会显示:
|
||||
|
||||
- 当前连接名称
|
||||
- 服务端要求输入的提示项
|
||||
- 如果该连接绑定了 OTP,还会显示验证码面板
|
||||
|
||||
你可以:
|
||||
|
||||
- 手动输入验证码
|
||||
- 直接把当前 OTP 验证码发送到输入框
|
||||
- 提交或取消本次认证
|
||||
|
||||
## 自动填充 OTP
|
||||
|
||||
如果某个 SSH 连接已经绑定了 OTP 条目,还可以启用 **自动填充 OTP**。
|
||||
|
||||
适合场景:
|
||||
|
||||
- 固定资产环境
|
||||
- 跳板机 / 堡垒机需要验证码
|
||||
- 高频重复登录的运维场景
|
||||
|
||||
建议只对你明确掌握认证流程的连接开启,避免在不兼容的交互提示上产生误填。
|
||||
|
||||
## 与密码 / 私钥的关系
|
||||
|
||||
OTP 不是替代密码或私钥,而是和它们配合使用:
|
||||
|
||||
- **密码 + OTP**
|
||||
- **私钥 + OTP**
|
||||
|
||||
因此更推荐的管理方式是:
|
||||
|
||||
1. 在 Security/Auth 中先分别整理好密码、私钥、OTP
|
||||
2. 再在具体 SSH 连接中绑定这些材料
|
||||
|
||||
这样连接配置会更干净,也更方便后续统一替换认证信息。
|
||||
|
||||
:::tip 截图建议
|
||||
- 推荐图片路径:`/img/docs/security/otp-management.png`
|
||||
- 建议展示 OTP 管理页中的 TOTP / HOTP 切换、二维码导入入口和验证码面板
|
||||
- 另一个推荐图片路径:`/img/docs/security/otp-dialog.png`
|
||||
- 建议展示 SSH 登录过程中弹出的 OTP 输入对话框
|
||||
:::
|
||||
@@ -4,63 +4,121 @@ sidebar_position: 7
|
||||
|
||||
# 安全功能
|
||||
|
||||
Dragonfly 提供多层安全保护机制。
|
||||
Dragonfly 的安全能力主要围绕三件事展开:
|
||||
|
||||
## 凭据存储
|
||||
1. 安全保存本地凭据与认证材料
|
||||
2. 管理 SSH 连接过程中的主机校验与二次认证
|
||||
3. 在桌面端工作区中提供锁屏与主密码保护
|
||||
|
||||
### 系统密钥链
|
||||
## 本地敏感数据的保存方式
|
||||
|
||||
启用 **使用系统凭据管理器** 后,凭据将安全地存储在操作系统原生的密钥链中:
|
||||
Dragonfly 会在本地保存连接相关配置,并对敏感内容做加密处理后再写入配置文件。常见的敏感数据包括:
|
||||
|
||||
- **macOS** — Keychain
|
||||
- **Windows** — Credential Manager
|
||||
- **Linux** — Secret Service (GNOME Keyring / KWallet)
|
||||
- 已保存密码
|
||||
- SSH 私钥与私钥口令
|
||||
- OTP 密钥
|
||||
- 主密码本身的持久化表示
|
||||
|
||||
### 加密存储
|
||||
因此,平时使用时你看到的是“可以复用的密码 / 私钥 / OTP 条目”,而不是明文直接散落在普通文本配置里。
|
||||
|
||||
所有敏感数据(密码、私钥、密码短语)均使用 **AES-256-GCM** 加密后存储在本地配置文件中。
|
||||
## Security/Auth 面板
|
||||
|
||||
左侧活动栏中的 **Security/Auth** 面板集中管理认证相关内容,分为三类:
|
||||
|
||||
- **密钥**
|
||||
- **密码**
|
||||
- **OTP**
|
||||
|
||||
这意味着你不需要在每个连接里重复录入所有敏感信息,而是先把凭据存成可复用条目,再在连接表单中引用。
|
||||
|
||||
### SSH 密钥管理
|
||||
|
||||
适合保存:
|
||||
|
||||
- 常用登录私钥
|
||||
- 需要密码短语的私钥
|
||||
- 按环境区分的多个身份
|
||||
|
||||
创建 SSH 连接时,认证方式切换到 **私钥** 后,就可以直接选择已保存的密钥。
|
||||
|
||||
### 密码管理
|
||||
|
||||
适合保存:
|
||||
|
||||
- SSH 密码
|
||||
- 代理密码
|
||||
- 需要重复复用的口令条目
|
||||
|
||||
在 SSH 连接表单中,密码认证也会直接引用这里的已保存密码。
|
||||
|
||||
### OTP 管理
|
||||
|
||||
OTP 管理支持:
|
||||
|
||||
- **TOTP**
|
||||
- **HOTP**
|
||||
- 从二维码图片导入
|
||||
- 查看并生成当前验证码
|
||||
- 绑定到具体 SSH 连接
|
||||
|
||||
详细使用方式见 [OTP 与认证](./otp-and-auth)。
|
||||
|
||||
## 主密码
|
||||
|
||||
启用 **需要主密码** 后,会话数据将使用主密码加密,每次启动应用时必须输入主密码才能解密。
|
||||
主密码是 Dragonfly 桌面端最重要的一项本地保护能力。
|
||||
|
||||
在 **设置 → 安全 → 系统认证与加密** 中配置。
|
||||
你可以在 **设置 → 安全** 中设置主密码。设置后:
|
||||
|
||||
- 应用会用它来校验解锁
|
||||
- 本地敏感配置的保护会围绕它展开
|
||||
- 锁屏界面会要求输入这个密码才能解锁
|
||||
|
||||
如果你没有设置主密码,后续锁屏就只是一层界面遮罩,而不是严格意义上的密码保护。
|
||||
|
||||
## 屏幕锁定
|
||||
|
||||
### 手动锁定
|
||||
|
||||
点击状态栏的 **锁定** 按钮,或使用快捷键锁定屏幕。
|
||||
你可以随时从界面中的锁定入口或快捷键触发锁屏。
|
||||
|
||||
### 自动锁定
|
||||
|
||||
启用 **屏幕锁定保护** 后,应用会在以下情况自动锁定:
|
||||
在 **设置 → 安全** 中开启屏幕锁定后,还可以配置空闲分钟数:
|
||||
|
||||
- 应用启动时
|
||||
- 空闲一段时间后(可配置分钟数,设为 0 禁用)
|
||||
- `0` 表示不使用空闲自动锁定
|
||||
- 大于 `0` 时,空闲达到设定时间后自动进入锁屏界面
|
||||
|
||||
### 解锁密码
|
||||
### 解锁行为
|
||||
|
||||
可设置解锁密码。如果不设置密码,点击即可解锁。
|
||||
- **已设置主密码**:必须输入正确主密码才能解锁
|
||||
- **未设置主密码**:可以直接点击解锁
|
||||
|
||||
## SSH 密钥管理
|
||||
如果你准备把 Dragonfly 用在共享办公环境或演示现场,建议把“主密码 + 屏幕锁定”一起开启。
|
||||
|
||||
在 **设置 → 安全 → 密钥管理** 中管理 SSH 私钥:
|
||||
## SSH 主机密钥策略
|
||||
|
||||
- 导入私钥文件
|
||||
- 设置密钥名称和密码短语
|
||||
- 删除不需要的密钥
|
||||
|
||||
导入的私钥会加密存储在本地。
|
||||
|
||||
## 主机密钥策略
|
||||
|
||||
控制 SSH 连接时如何处理未知主机密钥:
|
||||
SSH 首次连接未知主机时,Dragonfly 支持三种策略:
|
||||
|
||||
| 策略 | 行为 |
|
||||
|------|------|
|
||||
| 提示 | 首次连接时弹窗询问是否信任(默认) |
|
||||
| 接受 | 自动接受并记录新主机密钥 |
|
||||
| 严格 | 拒绝所有未知主机密钥 |
|
||||
| 提示 | 首次连接时询问是否信任(默认) |
|
||||
| 接受 | 自动接受新的主机密钥 |
|
||||
| 严格 | 拒绝所有未知主机 |
|
||||
|
||||
已知主机密钥存储在 `~/.dragonfly/known_hosts` 文件中。
|
||||
已知主机记录保存在 `~/.dragonfly/known_hosts`。
|
||||
|
||||
如果你处在对主机身份校验要求更高的环境,建议使用“提示”或“严格”,而不是无条件接受。
|
||||
|
||||
## 安全使用建议
|
||||
|
||||
- 生产环境优先使用 **私钥 + OTP**,不要长期依赖单一密码
|
||||
- 对共享电脑或演示机,开启 **主密码** 与 **屏幕锁定**
|
||||
- 对需要经常穿过堡垒机的环境,把 **跳板机** 和 **代理** 做成明确的已保存配置
|
||||
- 对首次连接的新主机,核对主机密钥来源后再信任
|
||||
|
||||
:::tip 截图建议
|
||||
- 推荐图片路径:`/img/docs/security/security-settings.png`
|
||||
- 建议展示主密码、屏幕锁定、空闲锁定时间、主机密钥策略
|
||||
- 另一个推荐图片路径:`/img/docs/security/security-auth-panel.png`
|
||||
- 建议展示 Security/Auth 面板中的密钥、密码、OTP 三个标签
|
||||
:::
|
||||
@@ -0,0 +1,123 @@
|
||||
---
|
||||
sidebar_position: 0
|
||||
---
|
||||
|
||||
# 会话类型
|
||||
|
||||
Dragonfly 不只是 SSH 客户端,而是一个把多类终端工作流放到同一工作区中的桌面应用。当前支持四类会话:
|
||||
|
||||
- **SSH**
|
||||
- **本地终端**
|
||||
- **Telnet**
|
||||
- **串口**
|
||||
|
||||
理解它们之间的差异,有助于你判断某个功能为什么“只在某些标签页里出现”。
|
||||
|
||||
## 一览对比
|
||||
|
||||
| 会话类型 | 典型场景 | 支持的增强能力 |
|
||||
|----------|----------|----------------|
|
||||
| SSH | Linux / Unix 服务器远程运维 | SFTP、OTP、资源监控、代理、跳板机、隧道 |
|
||||
| 本地终端 | 本地 shell、脚本调试、构建命令 | 共享同一套终端 UI、命令历史、分屏 |
|
||||
| Telnet | 旧设备、实验环境、兼容性排障 | 终端工作区能力,但不包含 SSH 专属特性 |
|
||||
| 串口 | 路由器、交换机、板卡、嵌入式调试口 | 串口参数配置、终端工作区能力 |
|
||||
|
||||
## SSH
|
||||
|
||||
SSH 是当前能力最完整的会话类型,适合:
|
||||
|
||||
- 登录远程 Linux / Unix 主机
|
||||
- 浏览和传输远程文件
|
||||
- 使用 OTP、跳板机、代理
|
||||
- 查看远程资源监控
|
||||
- 配置端口隧道
|
||||
|
||||
如果你需要:
|
||||
|
||||
- 文件浏览器
|
||||
- 自动上传 / 回传
|
||||
- 远程资源监控
|
||||
- 网络面板中的 SSH 隧道
|
||||
|
||||
那么应该优先使用 SSH。
|
||||
|
||||
## 本地终端
|
||||
|
||||
本地终端适合把本机 shell 工作流也放进 Dragonfly 工作区中,例如:
|
||||
|
||||
- 本地构建前端 / Rust 项目
|
||||
- 跑脚本、日志查看、Git 命令
|
||||
- 和远程 SSH 会话并排对照
|
||||
|
||||
它支持的重点不在远程功能,而在“和 SSH 会话共享同一套工作区体验”:
|
||||
|
||||
- 标签页
|
||||
- 分屏
|
||||
- 终端搜索
|
||||
- 命令历史与建议
|
||||
- 行号 / 时间戳 / 高亮等终端增强项
|
||||
|
||||
创建本地终端时,还可以指定:
|
||||
|
||||
- shell 路径,例如 `powershell.exe`、`cmd.exe`、`bash`、`wsl.exe`
|
||||
- 工作目录
|
||||
|
||||
## Telnet
|
||||
|
||||
Telnet 会话适合:
|
||||
|
||||
- 旧设备维护
|
||||
- 实验室环境
|
||||
- 需要兼容非 SSH 登录链路的场景
|
||||
|
||||
它保留的是 Dragonfly 的终端工作区能力,但不会附带 SSH 特有的安全和文件能力。因此通常不会有:
|
||||
|
||||
- SFTP 文件浏览器
|
||||
- OTP 绑定
|
||||
- SSH 跳板机
|
||||
- SSH 资源监控
|
||||
|
||||
如果你的目标只是“快速打开一个传统远程终端”,Telnet 会更直接。
|
||||
|
||||
## 串口
|
||||
|
||||
串口会话适合连接:
|
||||
|
||||
- 网络设备控制台口
|
||||
- 路由器 / 交换机
|
||||
- 开发板、嵌入式设备、调试口
|
||||
|
||||
创建串口会话时可以配置:
|
||||
|
||||
- 串口号
|
||||
- 波特率
|
||||
- 数据位
|
||||
- 校验位
|
||||
- 停止位
|
||||
|
||||
串口会话同样可以放进 Dragonfly 的标签页与分屏工作区中,适合边看一个串口输出,边在另一个 SSH 或本地终端里执行命令。
|
||||
|
||||
## 如何选择?
|
||||
|
||||
可以按下面这个简单规则判断:
|
||||
|
||||
- 要远程服务器完整能力:用 **SSH**
|
||||
- 要本机 shell:用 **本地终端**
|
||||
- 要兼容传统远程终端:用 **Telnet**
|
||||
- 要接调试口 / 设备串口:用 **串口**
|
||||
|
||||
## 在一个工作区里混用
|
||||
|
||||
Dragonfly 的优势之一,是允许你把这些类型混合放进同一工作区,例如:
|
||||
|
||||
- 左边 SSH 看远端日志
|
||||
- 右边本地终端执行打包脚本
|
||||
- 再开一个串口标签观察设备启动信息
|
||||
|
||||
这也是为什么文档里很多功能会写成“某会话类型专属”或“某会话类型才显示”的原因——工作区统一,但能力边界仍然取决于底层会话类型。
|
||||
|
||||
:::tip 截图建议
|
||||
- 推荐图片路径:`/img/docs/session-types/new-session-tabs.png`
|
||||
- 建议展示新建连接窗口中的 SSH / 本地终端 / Telnet / 串口四个标签
|
||||
- 可同时保留各标签的默认字段区域,便于用户理解差异
|
||||
:::
|
||||
@@ -4,77 +4,157 @@ sidebar_position: 1
|
||||
|
||||
# SSH 连接管理
|
||||
|
||||
## 连接配置
|
||||
SSH 仍然是 Dragonfly 最完整的一类会话。除了基础登录外,SSH 连接还可以进一步挂接:
|
||||
|
||||
- SFTP 文件浏览器
|
||||
- 远程资源监控
|
||||
- 代理
|
||||
- 跳板机
|
||||
- OTP 绑定与自动填充
|
||||
- 端口隧道
|
||||
|
||||
如果你第一次接触 Dragonfly,通常建议先把 SSH 连接配置好,再去扩展文件、终端增强和网络能力。
|
||||
|
||||
## 创建 SSH 连接
|
||||
|
||||
在 **新建连接** 窗口切换到 **SSH** 标签后,可以填写这些信息:
|
||||
|
||||
### 基本信息
|
||||
|
||||
创建 SSH 连接时,需要填写以下信息:
|
||||
|
||||
| 字段 | 说明 | 必填 |
|
||||
|------|------|------|
|
||||
| 连接名称 | 用于识别的显示名称 | 否 |
|
||||
| 图标 | 自定义图标 | 否 |
|
||||
| 分组 | 连接所属分组 | 否 |
|
||||
| 主机 | 服务器 IP 或域名 | 是 |
|
||||
| 端口 | SSH 端口号(默认 22) | 否 |
|
||||
| 用户名 | 登录用户名 | 是 |
|
||||
| 认证方式 | 密码或私钥 | 是 |
|
||||
| 描述 | 连接的备注说明 | 否 |
|
||||
| 字段 | 说明 |
|
||||
|------|------|
|
||||
| 连接名称 | 在已保存连接列表中的显示名称 |
|
||||
| 主机 | 服务器 IP 或域名 |
|
||||
| 端口 | 默认 `22` |
|
||||
| 用户名 | 登录用户名 |
|
||||
| 图标 | 用于区分不同环境或服务 |
|
||||
| 分组 | 把连接整理到文件夹中 |
|
||||
| 描述 | 记录用途、环境或备注 |
|
||||
|
||||
### 认证方式
|
||||
|
||||
Dragonfly 支持两种认证方式:
|
||||
Dragonfly 支持两种常见 SSH 认证方式:
|
||||
|
||||
- **密码**
|
||||
- **私钥**
|
||||
|
||||
你可以直接选择已经保存的密码或私钥,而不必每次重复填写。
|
||||
|
||||
#### 密码认证
|
||||
|
||||
直接输入服务器密码。密码会使用 AES-256-GCM 加密存储在本地。
|
||||
适合:
|
||||
|
||||
#### 密钥认证
|
||||
- 临时测试机
|
||||
- 还未发放私钥的环境
|
||||
- 与 OTP 联合使用的账号
|
||||
|
||||
选择已导入的 SSH 私钥进行认证。支持 RSA、Ed25519 等常见密钥格式。
|
||||
#### 私钥认证
|
||||
|
||||
如需管理密钥,前往 **设置 → 安全 → 密钥管理**。
|
||||
适合:
|
||||
|
||||
## 连接分组
|
||||
- 日常远程运维
|
||||
- 多台主机复用同一身份
|
||||
- 需要配合跳板机或自动化流程的场景
|
||||
|
||||
你可以创建文件夹来组织连接:
|
||||
私钥和密码都可以在 **Security/Auth** 面板中统一管理。
|
||||
|
||||
- 右键点击侧边栏空白区域选择 **新建文件夹**
|
||||
- 支持多级嵌套文件夹
|
||||
- 拖拽连接到文件夹中进行分组
|
||||
- 右键文件夹可重命名或删除
|
||||
## 高级配置
|
||||
|
||||
## 连接排序
|
||||
SSH 表单的高级区域可以把连接从“能连上”扩展成“适合日常使用”的工作流配置。
|
||||
|
||||
侧边栏支持三种排序方式:
|
||||
### 代理
|
||||
|
||||
- **自定义顺序** — 手动拖拽调整
|
||||
- **名称 A → Z** — 按名称升序
|
||||
- **名称 Z → A** — 按名称降序
|
||||
如果需要通过代理建立 SSH 连接,可以直接为当前连接选择已保存的代理配置。
|
||||
|
||||
## 导入会话
|
||||
当前代理支持:
|
||||
|
||||
Dragonfly 支持从其他 SSH 客户端导入会话:
|
||||
- **SOCKS5**
|
||||
- **HTTP**
|
||||
|
||||
1. 右键点击侧边栏选择 **导入会话**
|
||||
2. 选择导入来源(目前支持 WindTerm)
|
||||
3. 选择对应的会话配置文件
|
||||
4. 确认导入
|
||||
代理记录中可保存:
|
||||
|
||||
## 主机密钥验证
|
||||
- 名称
|
||||
- 协议
|
||||
- 主机
|
||||
- 端口
|
||||
- 用户名 / 密码
|
||||
|
||||
Dragonfly 使用 TOFU(Trust On First Use)策略管理主机密钥:
|
||||
### 跳板机
|
||||
|
||||
- **提示** — 首次连接时询问是否信任(默认)
|
||||
- **接受** — 自动接受所有新主机密钥
|
||||
- **严格** — 拒绝所有未知主机密钥
|
||||
如果目标主机不能直连,可以为当前 SSH 连接指定另一个已保存的 SSH 连接作为 **跳板机**。
|
||||
|
||||
可在 **设置 → 安全 → 连接安全** 中修改策略。
|
||||
适合的场景:
|
||||
|
||||
## 代理支持
|
||||
- 先进入堡垒机,再访问内网服务器
|
||||
- 分环境隔离的生产网络
|
||||
- 多层 SSH 登录链路
|
||||
|
||||
如需通过代理连接,前往 **设置 → 代理** 配置:
|
||||
### OTP 绑定
|
||||
|
||||
- 支持 SOCKS5 协议
|
||||
- 配置代理主机和端口
|
||||
- 启用/禁用代理
|
||||
如果目标环境要求二次验证码,可以把一个 OTP 条目绑定到当前 SSH 连接。
|
||||
|
||||
绑定后有两种常见工作方式:
|
||||
|
||||
- 只是在认证时快速取码
|
||||
- 开启 **自动填充 OTP**,在支持的交互流程中直接带入验证码
|
||||
|
||||
这部分可以结合 [OTP 与认证](./otp-and-auth) 一起使用。
|
||||
|
||||
## 已保存连接的管理
|
||||
|
||||
保存后的连接会出现在右侧 **已保存连接** 面板中。常见操作包括:
|
||||
|
||||
- 双击直接连接
|
||||
- 按分组组织连接
|
||||
- 编辑已有配置
|
||||
- 复制连接作为新模板
|
||||
- 重新连接已存在的会话来源
|
||||
|
||||
如果你维护大量主机,建议用分组、图标和描述把“环境 / 项目 / 角色”区分开。
|
||||
|
||||
## 导入其他客户端的会话
|
||||
|
||||
Dragonfly 支持导入其他客户端的会话配置,目前可导入:
|
||||
|
||||
- **Xshell**(`.xts`)
|
||||
- **MobaXterm**(`.mxtsessions`)
|
||||
- **WindTerm**(`.sessions`)
|
||||
|
||||
导入后建议逐条检查:
|
||||
|
||||
- 主机与端口
|
||||
- 用户名
|
||||
- 是否需要补充代理 / 跳板机 / OTP 绑定
|
||||
- 本地保存的密码或私钥是否已经匹配
|
||||
|
||||
## 主机密钥策略
|
||||
|
||||
Dragonfly 会为 SSH 主机维护已知主机记录,并提供三种主机密钥策略:
|
||||
|
||||
| 策略 | 行为 |
|
||||
|------|------|
|
||||
| 提示 | 首次连接未知主机时询问是否信任(默认) |
|
||||
| 接受 | 自动接受并记录新的主机密钥 |
|
||||
| 严格 | 拒绝所有未知主机 |
|
||||
|
||||
已知主机记录保存在 `~/.dragonfly/known_hosts`。
|
||||
|
||||
如果你对安全要求较高,建议至少在生产环境中确认主机密钥来源,再决定是否接受。
|
||||
|
||||
## 什么时候该用 SSH,而不是其他会话类型?
|
||||
|
||||
优先使用 SSH 的典型场景是:
|
||||
|
||||
- 你需要远程文件浏览器或 SFTP
|
||||
- 你需要 OTP、跳板机、代理、隧道
|
||||
- 你需要远程资源监控
|
||||
- 你希望把连接长期保存下来复用
|
||||
|
||||
如果你只是想在 Dragonfly 里开一个本地 shell,请改用 [会话类型](./session-types) 里的 **本地终端**。
|
||||
|
||||
:::tip 截图建议
|
||||
- 推荐图片路径:`/img/docs/session-types/ssh-advanced-form.png`
|
||||
- 建议展示 SSH 表单中的主机、认证方式,以及高级区域中的代理 / 跳板机 / OTP 绑定
|
||||
- 另一个推荐图片路径:`/img/docs/network/ssh-import-and-groups.png`
|
||||
- 建议展示已保存连接分组与导入入口
|
||||
:::
|
||||
@@ -4,102 +4,142 @@ sidebar_position: 3
|
||||
|
||||
# 终端功能
|
||||
|
||||
Dragonfly 基于 xterm.js 提供了功能丰富的终端模拟器。
|
||||
Dragonfly 的终端体验围绕“在同一个工作区里高频处理远程与本地会话”设计。它基于 xterm.js,但实际体验并不只是一块终端画布,还包括搜索、命令历史、建议、可选增强项、录制和 SSH 辅助能力。
|
||||
|
||||
## 终端渲染
|
||||
## 基础操作
|
||||
|
||||
### 硬件加速
|
||||
### 搜索、复制与右键菜单
|
||||
|
||||
默认启用 WebGL 渲染,利用 GPU 加速终端绘制,确保流畅的滚动和输出体验。
|
||||
|
||||
可在 **设置 → 终端 → 硬件加速** 中开启或关闭。
|
||||
|
||||
### 字体配置
|
||||
|
||||
- **字体系列** — 支持多字体回退链,首选字体优先级最高
|
||||
- **字体大小** — 终端和界面字体大小分别可调
|
||||
- **字体连字** — 可启用编程字体连字特性
|
||||
|
||||
内置 JetBrains Mono 和 Noto Sans SC 字体,也可使用系统安装的任意字体。
|
||||
|
||||
### 光标样式
|
||||
|
||||
支持三种光标样式:
|
||||
- 块(Block)
|
||||
- 下划线(Underline)
|
||||
- 竖线(Bar)
|
||||
|
||||
可选择是否启用光标闪烁。
|
||||
|
||||
## 终端操作
|
||||
|
||||
### 右键菜单
|
||||
|
||||
在终端中右键可以:
|
||||
终端右键菜单可直接执行这些高频操作:
|
||||
|
||||
- 复制 / 粘贴
|
||||
- 粘贴选定的文本
|
||||
- 粘贴选中的文本
|
||||
- 查找文本
|
||||
- 在线搜索选中文本
|
||||
- 翻译选中文本
|
||||
- 清屏 / 全部清除
|
||||
- 全选
|
||||
|
||||
### 回滚缓冲区
|
||||
在 **设置 → 交互** 中,你还可以调整:
|
||||
|
||||
终端保留可配置行数的历史输出(默认 1000 行),可通过滚轮向上滚动查看历史内容。
|
||||
- **选中即复制**
|
||||
- **右键粘贴**
|
||||
- 单词分隔符
|
||||
- 默认字符编码
|
||||
|
||||
在 **设置 → 终端 → 回滚缓冲区** 中调整行数。
|
||||
### 回滚缓冲区与字体
|
||||
|
||||
### 剪贴板
|
||||
- 回滚缓冲区默认保留 **10000 行**输出
|
||||
- 可自定义字体族、字号、连字、光标样式与闪烁
|
||||
- **硬件加速**为可选项,默认并未开启;如果你希望对比渲染效果,可在 **设置 → 终端** 中手动切换
|
||||
|
||||
- **选中即复制** — 选中文本自动复制到剪贴板
|
||||
- **右键粘贴** — 右键点击终端区域粘贴剪贴板内容
|
||||
## 命令历史与建议
|
||||
|
||||
在 **设置 → 交互** 中配置。
|
||||
Dragonfly 会为会话工作流提供两类辅助:
|
||||
|
||||
## 关键词高亮
|
||||
### 命令历史
|
||||
|
||||
Dragonfly 支持终端文本的关键词高亮:
|
||||
- 自动记录终端输入过的命令
|
||||
- 支持模糊检索
|
||||
- 可从右侧的 **命令历史** 面板回看历史输入
|
||||
|
||||
### 内置规则
|
||||
### 输入建议
|
||||
|
||||
自动识别并高亮常见模式,包括:
|
||||
- 日期时间格式
|
||||
- 数字
|
||||
- 错误/警告关键词
|
||||
输入时会基于历史命令给出建议,适合重复执行运维命令、构建命令或排障脚本。
|
||||
|
||||
内置规则会根据当前主题自动调整配色。
|
||||
## 可选终端增强项
|
||||
|
||||
### 自定义规则
|
||||
下面这些能力都需要你按需开启,而不是默认全部打开。
|
||||
|
||||
在 **设置 → 终端 → 关键词高亮** 中添加自定义规则:
|
||||
### 行号与时间戳 gutter
|
||||
|
||||
1. 设置规则名称
|
||||
2. 选择高亮颜色
|
||||
3. 添加匹配模式(支持正则表达式),每行一个
|
||||
在 **设置 → 终端** 中可分别开启:
|
||||
|
||||
自定义规则的优先级高于内置规则。
|
||||
- **显示行号**
|
||||
- **显示时间戳**
|
||||
|
||||
## 命令历史
|
||||
开启后,终端左侧会出现 gutter,用于辅助阅读长日志、命令输出或回放录制内容。
|
||||
|
||||
终端会自动记录输入的命令:
|
||||
### 动作链接
|
||||
|
||||
- 按会话分组存储
|
||||
- 支持模糊搜索
|
||||
- 在左侧边栏的 **命令历史** 面板中查看
|
||||
动作链接默认关闭,开启后可识别并点击常见文本模式,包括:
|
||||
|
||||
## 联想补全
|
||||
- IPv4 地址,例如 `192.168.1.10`
|
||||
- `host:port`,例如 `db.internal:5432`
|
||||
- 压缩包文件名,例如 `backup.tar.gz`
|
||||
|
||||
终端输入时会自动显示命令联想补全建议,基于历史命令进行匹配。
|
||||
注意:
|
||||
|
||||
## Keep-Alive
|
||||
- 需要先在 **设置 → 终端** 中开启 **动作链接**
|
||||
- 打开链接时需要使用 **Ctrl / Cmd + 点击**,避免和普通选中操作冲突
|
||||
- 具体匹配器可以单独启用或关闭
|
||||
|
||||
可配置 SSH Keep-Alive 间隔,防止连接因空闲而断开:
|
||||
### 关键词高亮
|
||||
|
||||
- 在 **设置 → 终端 → Keep-Alive 间隔** 中设置
|
||||
- 设为 0 则禁用
|
||||
关键词高亮同样默认关闭。启用后,Dragonfly 会先应用内置规则,再叠加你的自定义规则。
|
||||
|
||||
## 远程资源监控
|
||||
内置规则覆盖的内容不只限于错误关键字,还包括:
|
||||
|
||||
在 **设置 → 终端** 中启用 **显示远程资源信息** 后,状态栏会显示当前 SSH 主机的 CPU 和内存使用情况,每 10 秒更新一次。
|
||||
- error / warn / success / info / debug 等常见状态词
|
||||
- 日期时间
|
||||
- 数字、大小、持续时间
|
||||
- 地址、URL、UUID、版本号等结构化文本
|
||||
|
||||
你也可以自定义规则:
|
||||
|
||||
- 自定义规则名称
|
||||
- 分别设置深色 / 浅色主题颜色
|
||||
- 每行填写一个匹配模式
|
||||
- 可选择是否跨折行继续匹配
|
||||
|
||||
## SSH 相关辅助能力
|
||||
|
||||
### Keep-Alive
|
||||
|
||||
对 SSH 会话,可以在 **设置 → 终端** 中配置 Keep-Alive 间隔:
|
||||
|
||||
- 默认值为 **60 秒**
|
||||
- 设为 `0` 表示关闭
|
||||
- 适合降低长时间空闲连接被远端回收的概率
|
||||
|
||||
### 远程资源监控
|
||||
|
||||
远程资源监控不是全局默认显示项。要使用它,需要同时满足:
|
||||
|
||||
1. 当前是一个 **SSH 会话**
|
||||
2. 在 **设置 → 终端** 中开启 **显示远程资源信息**
|
||||
|
||||
启用后,右侧 **资源监控** 面板会按设定间隔轮询主机信息;默认轮询间隔为 **3 秒**,可手动调整。
|
||||
|
||||
面板会显示的内容包括:
|
||||
|
||||
- 主机名、系统、架构、运行时长
|
||||
- Load Average
|
||||
- CPU 使用率
|
||||
- 内存使用情况
|
||||
- 网络吞吐速率
|
||||
|
||||
## 录制与工作流配合
|
||||
|
||||
Dragonfly 支持会话录制,适合:
|
||||
|
||||
- 保留排障步骤
|
||||
- 给同事复现问题
|
||||
- 截取有时间顺序的终端示例
|
||||
|
||||
如果你准备录制文档素材,通常可以把这些能力组合起来:
|
||||
|
||||
- 行号 / 时间戳 gutter
|
||||
- 关键词高亮
|
||||
- 动作链接
|
||||
- 命令历史
|
||||
- 资源监控
|
||||
|
||||
这样更容易拍出“终端在真实工作流中使用”的截图,而不是单独展示某个开关。
|
||||
|
||||
:::tip 截图建议
|
||||
- 推荐图片路径:`/img/docs/terminal/gutter-line-numbers-timestamps.png`
|
||||
- 建议先在 **设置 → 终端** 中开启行号与时间戳,再执行:`scripts/demo-terminal-gutter.sh`
|
||||
- 另一个推荐图片路径:`/img/docs/terminal/action-links-and-highlights.png`
|
||||
- 建议先开启动作链接与关键词高亮,再执行:`scripts/demo-terminal-output.sh` 与 `scripts/demo-action-links.sh`
|
||||
:::
|
||||
@@ -0,0 +1,134 @@
|
||||
---
|
||||
sidebar_position: 5
|
||||
---
|
||||
|
||||
# 代理、跳板机与隧道
|
||||
|
||||
Dragonfly 把网络相关能力分成三层:
|
||||
|
||||
1. **代理**:先解决“怎么连出去”
|
||||
2. **跳板机**:再解决“通过哪台 SSH 主机中转”
|
||||
3. **隧道**:最后解决“把端口流量映射到哪里”
|
||||
|
||||
这三者经常会出现在同一个真实场景里,但职责不同,分开理解更清楚。
|
||||
|
||||
## 代理
|
||||
|
||||
代理用于帮助 Dragonfly 建立到远端的网络连接。
|
||||
|
||||
当前支持:
|
||||
|
||||
- **SOCKS5**
|
||||
- **HTTP**
|
||||
|
||||
每个代理配置可保存:
|
||||
|
||||
- 名称
|
||||
- 协议
|
||||
- 主机
|
||||
- 端口
|
||||
- 用户名 / 密码
|
||||
|
||||
代理在网络面板中统一管理,之后可以在 SSH 连接的高级区域中直接选择。
|
||||
|
||||
适合场景:
|
||||
|
||||
- 办公网必须走代理
|
||||
- 某些区域网络不允许直连
|
||||
- 需要统一维护一组出站网络配置
|
||||
|
||||
## 跳板机
|
||||
|
||||
跳板机是 SSH 专属能力。它的作用不是代替代理,而是使用一个已保存的 SSH 连接作为中转入口。
|
||||
|
||||
适合场景:
|
||||
|
||||
- 堡垒机 / bastion host
|
||||
- 目标主机只允许内网访问
|
||||
- 多层 SSH 网络隔离
|
||||
|
||||
在 SSH 连接高级区域中,你可以直接从已有 SSH 连接里选一个作为跳板机。
|
||||
|
||||
## 隧道
|
||||
|
||||
Dragonfly 在网络面板中提供专门的隧道管理页,可把端口映射保存为可复用配置。
|
||||
|
||||
### 支持的隧道类型
|
||||
|
||||
- **本地隧道(local)**
|
||||
- **远程隧道(remote)**
|
||||
- **动态隧道(dynamic / SOCKS5)**
|
||||
|
||||
### 本地隧道
|
||||
|
||||
把本机监听端口转发到远端目标地址,适合:
|
||||
|
||||
- 访问内网数据库
|
||||
- 打开只能在远端访问的 Web 控制台
|
||||
- 通过 SSH 安全转发服务端口
|
||||
|
||||
### 远程隧道
|
||||
|
||||
把远端监听端口映射回本地服务,适合:
|
||||
|
||||
- 临时把本地服务暴露给远端环境
|
||||
- 做反向调试或联调
|
||||
|
||||
### 动态隧道
|
||||
|
||||
创建一个本地 SOCKS5 代理端口,适合:
|
||||
|
||||
- 浏览器或工具临时走 SSH 动态代理
|
||||
- 需要快速建立一条“经 SSH 出站”的代理链路
|
||||
|
||||
## 隧道配置项
|
||||
|
||||
创建隧道时,通常会配置:
|
||||
|
||||
- 隧道名称
|
||||
- 隧道类型
|
||||
- 关联的 SSH 连接
|
||||
- 监听端口
|
||||
- 目标主机 / 目标端口(动态隧道除外)
|
||||
- 是否仅绑定 `127.0.0.1`
|
||||
- 是否自动打开
|
||||
|
||||
如果你只想本机自己访问,建议保持绑定到 `127.0.0.1`;这通常比监听 `0.0.0.0` 更安全。
|
||||
|
||||
## 网络面板中的日常操作
|
||||
|
||||
在网络面板中,你可以:
|
||||
|
||||
- 新建 / 编辑 / 删除代理
|
||||
- 新建 / 编辑 / 删除隧道
|
||||
- 直接打开或关闭某条隧道
|
||||
- 查看某条隧道当前是否处于打开状态
|
||||
|
||||
这让网络配置不再是“一次性命令”,而是可以被保存、复用和可视化管理。
|
||||
|
||||
## 典型组合示例
|
||||
|
||||
### 示例 1:代理 + SSH
|
||||
|
||||
- 先在网络面板中保存一个 SOCKS5 代理
|
||||
- 再在 SSH 连接高级区域里选择这个代理
|
||||
- 适合公司网络或跨区访问环境
|
||||
|
||||
### 示例 2:跳板机 + 目标主机
|
||||
|
||||
- 先保存堡垒机连接
|
||||
- 再在业务主机连接里把堡垒机设为跳板机
|
||||
- 适合内网分层登录场景
|
||||
|
||||
### 示例 3:SSH + 本地隧道
|
||||
|
||||
- 建立 SSH 连接
|
||||
- 保存一个本地隧道 `localhost:15432 -> db.internal:5432`
|
||||
- 之后本地工具即可通过 `127.0.0.1:15432` 访问数据库
|
||||
|
||||
:::tip 截图建议
|
||||
- 推荐图片路径:`/img/docs/network/network-panel.png`
|
||||
- 建议展示网络面板中的代理与隧道两个标签
|
||||
- 另一个推荐图片路径:`/img/docs/network/tunnel-dialog.png`
|
||||
- 建议展示隧道类型、本地监听端口、目标主机与自动打开选项
|
||||
:::
|
||||
+63
-24
@@ -5,33 +5,72 @@ slug: /
|
||||
|
||||
# 项目介绍
|
||||
|
||||
**Dragonfly** 是一个现代、高性能的 SSH 客户端,基于 [Tauri](https://tauri.app/) 和 [React](https://react.dev/) 构建。它将精致的用户界面与强大的 Rust 后端相结合,为开发者和运维人员提供卓越的远程服务器管理体验。
|
||||
**Dragonfly** 是一个围绕远程终端工作流设计的桌面客户端。它以 Tauri + React 构建前端界面,以 Rust 负责 SSH、SFTP、会话管理、隧道、认证与配置持久化,让你在同一个工作区中处理远程服务器、本地 shell、串口设备和网络辅助能力。
|
||||
|
||||
## 核心特性
|
||||
## 适合哪些场景
|
||||
|
||||
- **安全高效的 SSH 连接** — 基于 Rust `russh` 库,提供原生级性能
|
||||
- **多标签界面** — 同时管理多个 SSH 和本地终端会话
|
||||
- **会话管理** — 保存、组织和快速连接常用服务器
|
||||
- **集成文件浏览器** — 通过 SFTP 直接在侧边栏浏览和管理远程文件
|
||||
- **命令历史** — 自动记录并支持模糊搜索的命令历史
|
||||
- **快捷命令** — 一键执行常用命令,支持变量替换
|
||||
- **可定制界面** — 可调整面板大小,支持深色/浅色主题
|
||||
- **跨平台** — 支持 Windows、macOS 和 Linux
|
||||
- 同时维护多台 SSH 主机
|
||||
- 在本地终端、Telnet、串口设备之间切换排障
|
||||
- 边看终端输出边操作远程文件
|
||||
- 为常用运维命令、登录流程和跳板机链路做标准化配置
|
||||
- 需要 OTP、录制、资源监控、自动上传等增强能力
|
||||
|
||||
## 技术栈
|
||||
## 核心能力
|
||||
|
||||
| 层级 | 技术 |
|
||||
|------|------|
|
||||
| 前端 | React 19, TypeScript, Vite, TailwindCSS 4 |
|
||||
| 后端 | Tauri 2, Rust |
|
||||
| 终端 | xterm.js (WebGL 加速) |
|
||||
| SSH | russh (纯 Rust SSH 实现) |
|
||||
| 文件传输 | russh-sftp (管道化传输) |
|
||||
### 多种会话类型
|
||||
|
||||
## 为什么选择 Dragonfly?
|
||||
Dragonfly 不只支持 SSH,还支持:
|
||||
|
||||
1. **原生性能** — Rust 后端确保 SSH 连接和文件传输的高性能
|
||||
2. **安全至上** — AES-256-GCM 加密存储凭据,支持系统密钥链
|
||||
3. **现代 UI** — 基于 React 和 TailwindCSS 的精致界面
|
||||
4. **轻量级** — 基于 Tauri,安装包体积远小于 Electron 应用
|
||||
5. **开源免费** — MIT 许可证,完全开源
|
||||
- **SSH** — 远程登录、文件传输、资源监控、隧道、OTP 等完整能力
|
||||
- **本地终端** — 在同一套 UI 中打开本地 shell
|
||||
- **Telnet** — 兼容旧设备或实验环境
|
||||
- **串口** — 适合网络设备、嵌入式板卡、调试口场景
|
||||
|
||||
### 可组合的工作区
|
||||
|
||||
- 多标签页管理多个会话
|
||||
- 标签页内支持**横向/纵向分屏**
|
||||
- 左右活动栏可放置文件浏览器、网络、Security/Auth、会话列表、命令历史、资源监控等面板
|
||||
- 设置、新建连接、快捷命令、自动上传提示均使用独立子窗口,减少主工作区干扰
|
||||
|
||||
### 面向终端操作的增强
|
||||
|
||||
- 命令历史与模糊建议
|
||||
- 终端搜索、复制/粘贴、上下文菜单
|
||||
- 可选的**行号 / 时间戳 gutter**
|
||||
- 可选的**动作链接**(如 IPv4、`host:port`、压缩包文件名)
|
||||
- 可选的**关键词高亮**与自定义规则
|
||||
- 会话录制与 SSH Keep-Alive
|
||||
|
||||
### 远程文件与自动回传
|
||||
|
||||
- SSH 会话下内置 SFTP 文件浏览器
|
||||
- 上传、下载、重命名、移动、删除、属性查看
|
||||
- 传输队列、失败重试、断点续传、时间戳保留
|
||||
- 在本地编辑下载的远程文件后,可通过 watcher 流程快速上传回远端
|
||||
|
||||
### 安全与网络能力
|
||||
|
||||
- 私钥、密码、主机密钥策略、本地加密存储
|
||||
- OTP 管理(TOTP / HOTP)、二维码导入、SSH 自动填充
|
||||
- 代理配置、跳板机、端口隧道
|
||||
- 锁屏与主密码能力
|
||||
|
||||
## 文档导航建议
|
||||
|
||||
如果你是第一次使用,建议按下面顺序阅读:
|
||||
|
||||
1. [快速开始](./getting-started/quick-start)
|
||||
2. [会话类型](./guide/session-types)
|
||||
3. [SSH 连接管理](./guide/ssh-connection)
|
||||
4. [工作区与布局](./guide/layout-and-workspace)
|
||||
5. [终端功能](./guide/terminal)
|
||||
6. [SFTP 文件传输](./guide/file-transfer)
|
||||
7. [代理、跳板机与隧道](./guide/tunnels-and-proxy)
|
||||
8. [OTP 与认证](./guide/otp-and-auth)
|
||||
|
||||
:::tip 截图建议
|
||||
- 推荐图片路径:`/img/docs/readme/main-workspace.png`
|
||||
- 建议展示内容:左侧活动栏、右侧面板、中心多标签终端、底部快捷区
|
||||
- 适合先执行的脚本:`scripts/demo-terminal-output.sh`
|
||||
:::
|
||||
Reference in new issue
Block a user