一个本地优先、跨平台的 SSH / SFTP 桌面客户端。
XSH 面向需要长期管理多台服务器的开发者和运维人员:用会话树整理连接,用多标签和分屏保持工作上下文,用内置 SFTP 和命令工具完成日常操作。
当前项目仍在快速迭代中,适合个人使用和体验。用于生产环境前,请先在测试服务器上验证 SSH、SFTP、端口转发和凭据恢复流程。
- 多标签 SSH 终端:切换标签不会主动断开 SSH 或丢失远程 PTY 状态
- 左右 / 上下分屏、命令广播、标签锁定、复制、重命名、排序和自定义颜色
- 命名工作区:保存、恢复、更新、重命名、删除,以及密码加密的
.xshworkspace导入 / 导出 - Keepalive、断线指数退避重连、离线等待、网络恢复重连和 macOS 睡眠唤醒后的连接检查
- 终端日志、内容搜索、复制全部、清屏、滚动到底部、字体缩放和可配置回滚缓冲区
- 会话目录树、收藏、搜索、最近连接和实时连接状态
- 会话与目录的创建、重命名、移动、批量收藏、批量删除和递归批量打开
- 支持批量编辑环境、自动重连、标签等终端配置
- 支持从
~/.ssh/config导入连接配置,并提供可执行的连接诊断
- 密码、OpenSSH 私钥、加密私钥、SSH Agent 和 keyboard-interactive 认证
- SHA-256 Host Key 指纹、TOFU 信任流程和 Host Key 变化阻断
- ProxyJump
- 本地、远程和动态端口转发;支持按会话保存隧道配置、自动启动和 SSH 重连恢复
- 支持 UTF-8 / CJK、256 色和 True Color
- 目录浏览、远程编辑、新建目录、重命名和递归删除
- 文件与目录递归上传 / 下载、拖拽上传和批量操作
- 覆盖、跳过、重命名等冲突处理策略
- 进度、取消、取消全部、失败重试和任务清理
- 全局与单主机并发调度,暂停任务释放运行槽并在继续时重新排队
- 上传、下载独立的应用级聚合限速,可在设置中按 KiB/s 或 MiB/s 配置
- 全局传输管理器保留后台任务并显示目标主机;单个 SFTP 面板只操作自己的连接
- 上传与下载断点续传,使用
.xsh-part临时文件和校验元数据 - 远端不支持覆盖式 rename 时使用可恢复 journal/backup,断链或进程退出后由下一次同目标上传自动收敛
- 有界内存流式传输,不将完整文件载入前端状态
- 命令中心:分类、标签、搜索、收藏、复制和发送到当前终端
- 类 Xshell 的快捷命令栏:分组、搜索、拖拽排序和快捷键
- 支持
\r、\n、\t转义 - 高置信度拦截明文密码、Token、私钥和
sshpass -p等敏感内容
XSH 按“本地优先、默认不泄露”设计:
- 密码和 Key Passphrase 只进入 XSH 自建的本地加密凭据库
- SQLite 只保存 opaque Credential Ref,不保存明文秘密
- 会话配置与会话实际使用的登录密码 / Key Passphrase 一起使用同一个文件密码加密到
.xshpack;工作区使用密码加密的.xshworkspace导入 / 导出;凭据库仍可使用独立密码导出.xshbackup备份 - Host Key 首次出现需要用户确认,发生变化时默认阻断连接
- 命令中心和快捷命令栏拒绝保存高置信度敏感内容
- 导入前先解密并校验完整文件;凭据恢复使用事务写入,避免失败后留下半份数据
.xshpack会加密保存会话实际引用的密码和 Key Passphrase,导入另一台设备时只需输入导出时设置的文件密码;普通工作区文件不包含这些凭据,.xshbackup仍用于全量凭据迁移- SFTP 使用流式传输和断点元数据,避免一次性读取完整文件
完整边界请参阅 SECURITY.md 和 产品规格。
推送 v* 格式的 Git tag 后,GitHub Actions 会构建并创建 GitHub Release。也可以手动运行 Build desktop artifacts 工作流,在 Actions 页面下载:
| 平台 | 构建产物 | 说明 |
|---|---|---|
| macOS Apple Silicon | xsh-macos-personal |
.dmg 安装包,ad-hoc 签名,适合个人使用 |
| Windows x64 | xsh-windows-installers |
NSIS .exe 和 MSI .msi,当前未签名 |
未签名构建可能触发 macOS Gatekeeper 或 Windows SmartScreen。请确认构建来源后再允许运行。
要求:
- Rust stable
- Node.js 22+
- pnpm 11.10+
- Tauri 2 对应的平台依赖
corepack enable
corepack prepare pnpm@11.10.0 --activate
pnpm install --frozen-lockfile
pnpm run devpnpm run build
# Tauri 标准构建
pnpm run tauri:build
# macOS 个人版
pnpm run build:macos:personal
# Windows(在 Windows 开发机执行)
pnpm run build:windowsmacOS 个人版产物:
target/release/bundle/macos/XSH.app
target/release/bundle/dmg/*.dmg
安装步骤:
- 双击
.dmg文件。 - 在打开的窗口中把
XSH拖到Applications。 - 从“应用程序”中启动 XSH。首次启动如果 macOS 提示来源无法验证,请在 Finder 中右键 XSH,选择“打开”,再确认一次。
Windows 安装包产物:
target/release/bundle/nsis/*.exe
target/release/bundle/msi/*.msi
提交前建议运行:
cargo fmt --all --check
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace
pnpm run build- Desktop:Tauri 2
- Frontend:React 19、TypeScript、Vite、xterm.js
- Backend:Rust、Tokio、russh、russh-sftp
- Storage:SQLite
- Security:Argon2、AES-256-GCM、
zeroize
apps/desktop/src React UI
apps/desktop/src-tauri Tauri IPC 与应用组装
crates/xsh-domain 领域模型与导入导出格式
crates/xsh-storage SQLite 存储与迁移
crates/xsh-security 本地加密凭据库
crates/xsh-ssh SSH、Host Key、PTY 与终端字节流
crates/xsh-sftp SFTP 操作与流式传输
docs/ 架构、规格与路线图
XSH 尽量不占用远端 Linux Shell、Vim、Emacs 和 tmux 常见的 Ctrl 组合:
- macOS:
⌘T新建标签、⌘W关闭标签、⌘B显示 / 隐藏侧栏 - Windows:使用
Ctrl+Shift作为工作区快捷键前缀,例如Ctrl+Shift+T/W/B - 分屏:macOS 使用
⌘⌥V/⌘⌥J,Windows 使用Ctrl+Alt+V/Ctrl+Alt+J - 复制、粘贴、查找、命令中心和更多快捷键可在应用设置中查看
XSH 的 V2 核心能力已经实现,目前重点是:
- macOS 日常使用体验和长时间稳定性
- Windows 10 / 11 实机安装与回归验证
- 大文件传输、网络切换和睡眠唤醒场景的压力测试
- 可访问性、高 DPI、多显示器和发布工程完善
暂不计划支持 SSH1、Telnet、Rlogin、RDP、X11 forwarding、ZMODEM、Kerberos、PKCS#11、云同步和团队共享凭据。
欢迎提交可复现的 bug、跨平台兼容性反馈和小范围改进。提交 issue、PR 或测试反馈前,请先阅读 CONTRIBUTING.md。
请勿在 issue、PR、日志、截图或提交历史中写入真实的主机、用户名、密码、Token、私钥或 Key Passphrase。安全问题请按照 SECURITY.md 的方式私密报告。
XSH 采用双许可证: