Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

272 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Nexterm

全功能 iOS SSH 终端客户端

Nexterm 是一款基于 Flutter 构建的现代化 SSH 终端客户端,专为 iOS 打造。集成多标签终端、SFTP/SMB/WebDAV 三协议文件管理、远程 Git 仓库管理、系统监控、Tmux 多路复用、Claude CLI 智能通知、语音输入、端口转发与 Web 预览、端对端加密云同步等专业级功能于一体。


功能亮点

终端

功能 描述
多标签 SSH 终端 同时开启多个 SSH 会话,通过标签页自由切换;标签类型涵盖 SSH 终端、SFTP、WebDAV、SMB、Web 预览
跳板机链式连接 支持多级跳板机(Jump Host)链路,一键穿透内网访问目标服务器
断线自动重连 SSH 连接断开后指数退避自动重连,终端内显示重连状态,无需手动操作
自动 Tmux 每台主机可配置连接时自动附加或创建 tmux 会话,支持自定义会话名;已有客户端时提示通知
启动命令 为主机配置连接后自动执行的 shell 命令或已保存的代码片段
OSC 52 剪贴板 支持远程到本地的剪贴板同步(OSC 52 转义序列)
编辑面板 多行文本输入面板,适合编写长命令或与 AI 助手交互;支持聊天模式自动换行
附件功能 从编辑面板发送附件:拍照、选择照片/视频、上传文件到远程主机,上传后自动插入远程路径
23 套统一主题 12 暗色 + 11 亮色主题(Nexterm、Dracula、Nord、Solarized、Gruvbox、Catppuccin、One Dark/Light、Tokyo Night、Monokai、Everforest、Kanagawa、Ayu、GitHub Light、Rosé Pine Dawn 等),选一个即同时切换终端配色与 App 界面风格
自定义字体 内置 JetBrains Mono、Source Code Pro、Fira Code、Ubuntu Mono 四款等宽字体
字体大小调节 在设置中调整(8~24pt)或在终端内双指缩放实时改变字号
可配置回滚行数 自定义终端缓冲区大小(100 ~ 1,000,000 行)
光标样式 块状、下划线、竖线三种光标样式可选
触觉反馈 按键时的触觉振动反馈(可关闭)
友好的错误提示 连接超时、认证失败、DNS 解析、网络错误等均提供中英双语提示

键盘与手势

功能 描述
自定义键盘工具栏 13 组快捷键(终端控制、信号、符号、导航、标点、括号、编辑、搜索、方向键、剪贴板等),可拖拽排序、增删分组、控制显示组数
Ctrl/Alt 修饰键 工具栏内置 Ctrl/Alt 切换按钮,与下一次按键组合发送
功能面板 底部面板三标签页——代码片段快速执行、命令历史搜索、全键盘网格视图
方向键面板(D-Pad) 屏幕虚拟方向键叠加层,方便触屏操作
手势配置 双指点击、左滑、右滑、下滑手势均可自定义动作(粘贴、复制、切换标签、隐藏键盘、切换 D-Pad 等)
使用频率排序 全键盘网格中按使用频率自动排序常用键

通知系统

功能 描述
终端 Bell 通知 终端 BEL 信号触发系统通知(App 在后台时),不错过命令完成提醒
Claude CLI 通知 深度集成 Claude Code CLI——远程服务器上 Claude 任务完成、请求权限、任务失败时自动推送本地通知;支持分项开关
远程推送通知 通过 Bark 服务发送远程推送通知,即使 App 被系统回收也能收到提醒
仅后台模式 可设置仅在 App 进入后台时才发送通知
通知声音 可选开启或关闭通知铃声
一键部署 从终端菜单一键将通知脚本和 Claude CLI hooks 部署到远程服务器

语音输入

功能 描述
系统识别 使用 iOS 本地语音识别引擎,无需联网,点击切换模式
火山引擎(豆包) 豆包大模型 2.0 流式语音识别,WebSocket 实时流式传输,长按说话模式
阿里云 NLS 阿里云智能语音服务,WebSocket 流式识别
速度测试 云端引擎内置速度测试,验证连接质量
语言选择 可独立选择语音识别语言,识别完成自动输出到终端

主机管理

功能 描述
主机分组与标签 通过分组和逗号分隔的标签整理主机,支持全文搜索过滤
认证方式 密码认证、SSH 密钥认证、键盘交互认证
收藏 常用主机标记收藏,快速访问
批量操作 全选、批量移动分组、批量删除
复制主机 一键复制主机配置
SFTP 初始目录 可为每台主机配置 SFTP 默认进入目录
最近连接 记录最后连接时间与连接类型
导入 SSH Config ~/.ssh/config 文件一键导入主机列表(支持 Host、HostName、User、Port、IdentityFile、ProxyJump)

安全与密钥

功能 描述
SSH 密钥管理 集中管理密钥,支持 Ed25519(推荐)、RSA-2048、RSA-4096 生成,可设置密码短语
密钥导入 从文件导入或粘贴 OpenSSH 格式密钥内容
密钥导出 导出公钥或私钥,一键复制公钥到剪贴板
生物识别解锁 支持 Face ID / Touch ID 快速解锁应用
自动锁定 可设置 1 / 5 / 10 / 30 分钟自动锁定
剪贴板自动清除 离开应用时自动清除剪贴板中的敏感内容

代码片段

功能 描述
可复用命令片段 将常用命令保存为片段,支持分组与标签管理、收藏
变量占位符 在片段中定义 {{变量名}} 占位符,可设默认值和描述,执行时弹窗填入
多行命令 支持多行片段,逐行发送到终端
快速执行 从功能面板一键执行、从片段列表搜索执行、或作为主机启动命令自动执行

端口转发

功能 描述
本地转发 将本地端口映射到远程地址,通过 SSH 隧道访问远程服务
远程转发 将本地服务暴露给远程服务器
动态转发 创建 SOCKS5 代理,通过 SSH 服务器转发全部流量
自动启动 可设置端口转发随 SSH 连接自动启动
端口检测 扫描远程服务器监听的 TCP 端口(通过 ss/netstat/lsof),显示进程名、PID、协议类型,支持一键添加转发规则
Web 预览 在 App 内嵌入 WebView 直接预览已转发端口的 Web 服务,无需切换浏览器
已知端口映射 内置 30+ 常用服务端口识别(MySQL、PostgreSQL、Redis、MongoDB、Nginx、Docker 等)

SFTP / SMB / WebDAV 文件管理

功能 描述
多协议支持 SFTP、SMB/CIFS、WebDAV 三种远程文件协议,统一文件浏览器界面
文件浏览器 面包屑导航、路径跳转、排序(名称/大小/日期/类型)、隐藏文件切换
上传与下载 文件上传下载,传输队列显示实时进度
代码编辑器 内置语法高亮编辑器(flutter_highlight),支持编辑/预览切换
Markdown 渲染 内置 Markdown 预览器,支持目录导航
图片查看器 远程图片在线预览
视频播放器 内置播放器(基于 media_kit/mpv),通过本地 HTTP 代理服务器实现边下边播、Range Request 支持、进度拖拽
文件操作 复制、粘贴、重命名、删除(递归)、新建文件夹、权限修改(chmod)、复制路径
左滑删除 文件列表和连接列表支持左滑删除
SMB 自动重连 网络中断后自动重连,支持错误恢复

系统监控

功能 描述
CPU 使用率 实时折线图展示 CPU 使用率变化
内存使用率 已用/空闲/总量内存实时监控
磁盘使用 各分区磁盘空间占用一览
网络流量 实时 RX/TX 网络速度图表
运行时间与负载 显示系统 Uptime 和 Load Average
跨平台 同时支持 Linux(/proc 文件系统)和 macOS(top/vm_stat/netstat)远程服务器

Tmux 多路复用器

功能 描述
会话管理 列出远程 tmux 会话,显示窗口数、客户端数、创建时间
一键附加 快速附加到已有 tmux 会话
新建会话 创建自定义名称的新 tmux 会话
结束会话 删除不需要的 tmux 会话
自动检测 自动检测远程主机是否安装 tmux
自动 Tmux 每台主机可独立配置连接时自动附加/创建 tmux 会话

Git 远程仓库管理

功能 描述
工作树状态 查看远程仓库的 staged/unstaged/untracked 文件变更及状态码
分支管理 浏览本地与远程分支,支持搜索过滤、当前分支指示、滑动删除
分支图 自定义画布可视化分支合并历史,显示合并点与引用标签
提交日志 查看分支提交历史,支持单文件历史,点击查看变更文件列表
Diff 查看 统一 Diff 视图,支持行级高亮与字符级内联差异对比
标签管理 浏览标签列表,支持 checkout、脏工作树 stash-and-checkout、删除
Git 仓库收藏 保存常用主机 + 路径组合,从保险库或终端快速打开
自动检测工作目录 从终端打开时自动检测 PTY shell 的当前工作目录
Git 初始化 目录不是 Git 仓库时提示初始化

云同步

功能 描述
端对端加密同步 数据在设备端通过 AES-256-GCM 加密后上传,服务器仅存储密文
账户系统 邮箱 + 密码注册与登录
多设备管理 管理已授权的同步设备(设备 ID 标识)
加密备份与恢复 导出加密 JSON 备份文件,通过系统分享面板分享或在新设备还原

其他

功能 描述
多语言支持 中文 / English,可跟随系统语言
保险库首页 分类入口——连接(主机、WebDAV、SMB)、工具(端口转发、片段、Git 仓库)、密钥链(SSH 密钥)
会话面板 活跃连接数、活跃转发数、主机总数、最近连接历史一览
导出数据 将所有主机、密钥、片段导出为加密 JSON 文件

技术栈

层次 技术
移动客户端 Flutter 3.29+ / Dart 3.7+
状态管理 Riverpod 2 + riverpod_generator
路由 go_router
本地数据库 Drift (SQLite)
SSH 协议 dartssh2
终端渲染 xterm.dart
文件协议 SFTP (dartssh2) / SMB (smb_connect) / WebDAV (webdav_client)
视频播放 media_kit (mpv)
图表 fl_chart
加密 pointycastle (AES-256-GCM, PBKDF2)
后端 FastAPI (Python 3.12)
数据库 PostgreSQL
认证 JWT (PyJWT + bcrypt)

项目结构

Nexterm/
├── nexterm/          # Flutter 移动端应用
│   ├── lib/
│   │   ├── core/     # 加密、路由、主题、国际化、通知等基础设施
│   │   ├── data/     # 数据库、DAO、Repository 实现
│   │   ├── domain/   # 实体定义与 Repository 接口
│   │   ├── features/ # 按功能划分的模块
│   │   │   ├── forwarding/    # 端口转发与端口检测
│   │   │   ├── git/           # Git 远程仓库管理
│   │   │   ├── hosts/         # 主机管理
│   │   │   ├── keys/          # SSH 密钥管理
│   │   │   ├── monitor/       # 系统监控仪表盘
│   │   │   ├── multiplexer/   # Tmux 多路复用器
│   │   │   ├── settings/      # 应用设置与安全
│   │   │   ├── sftp/          # SFTP/文件管理(含视频播放、编辑器)
│   │   │   ├── smb/           # SMB/CIFS 连接
│   │   │   ├── snippets/      # 代码片段
│   │   │   ├── sync/          # 云同步与账户
│   │   │   ├── terminal/      # 终端(含键盘、手势、语音、Claude CLI 集成)
│   │   │   ├── vaults/        # 保险库首页
│   │   │   └── webdav/        # WebDAV 连接
│   │   └── shared/   # 全局共用 Widget
│   ├── assets/fonts/  # 内置等宽字体
│   └── test/         # 单元测试与集成测试
├── server/           # FastAPI 云同步后端
│   ├── app/
│   │   ├── api/      # 路由:auth / sync / devices
│   │   ├── core/     # 配置、数据库连接、安全工具
│   │   ├── models/   # SQLAlchemy ORM 模型
│   │   ├── schemas/  # Pydantic 请求/响应模型
│   │   └── services/ # 业务逻辑层
│   └── tests/        # pytest 测试套件
└── docs/             # 架构设计文档
    └── architecture/

快速上手

移动端(Flutter)

cd nexterm

# 安装依赖
flutter pub get

# 运行代码生成(Drift DAO、Riverpod Provider)
dart run build_runner build --delete-conflicting-outputs

# 启动应用(连接已有模拟器或真机)
flutter run

云同步后端(Python / FastAPI)

cd server

# 创建虚拟环境
python -m venv venv && source venv/bin/activate

# 安装依赖
pip install -r requirements.txt

# 配置环境变量
cp .env.example .env   # 按需修改 DATABASE_URL、JWT_SECRET 等

# 启动服务(开发模式,自动重载)
uvicorn app.main:app --reload --port 8000

架构文档


License

待补充。

About

Nexterm 是一款基于 Flutter 构建的现代化 SSH 终端客户端,专为 iOS 打造。集成多标签终端、SFTP/SMB/WebDAV 三协议文件管理、远程 Git 仓库管理、系统监控、Tmux 多路复用、Claude CLI 智能通知、语音输入、端口转发与 Web 预览、端对端加密云同步等专业级功能于一体。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages