当前位置: 首页 > news >正文

DirBridge:从远程文件管理到内嵌 SSH 终端

最近一段时间,我继续完善了自己的 C++/Qt Windows 桌面项目 DirBridge。

在上一篇文章中,我主要介绍了 DirBridge 的第一阶段能力:本地与远程双栏文件管理、FTP/SFTP 目录浏览、站点配置、多远程会话、上传下载、拖拽传输和全局传输队列。

这些功能解决了“文件怎样在本地与服务器之间流动”的问题。但在真实的开发和部署过程中,传完文件通常并不意味着工作结束。上传构建产物之后,往往还需要执行脚本;修改配置之后,可能需要重新加载服务;发现异常时,还要继续查看进程、日志和运行状态。

如果每次都要离开文件管理工具,再单独打开终端、查找服务器信息并重新连接,整个操作过程就会被拆成几段。

因此,DirBridge 在原有远程文件管理能力的基础上加入了内嵌 SSH 终端,希望把文件操作和远程命令连接成一条连续的工作流:

在同一个界面中浏览和传输文件,然后直接打开对应服务器的 SSH 终端,继续完成命令操作。

项目地址:

GitHub:https://github.com/shy117/DirBridge
Releases:https://github.com/shy117/DirBridge/releases


一、DirBridge 当前的整体形态

DirBridge 目前仍然是一款面向 Windows 的 FTP/SFTP 双栏文件管理工具,但它已经不再只处理文件传输。

当前主要工作区域包括:

  • 左侧的站点和会话管理;
  • 中间的本地与远程文件面板;
  • 底部的传输队列、日志和 SSH 终端;
  • 多个彼此独立的远程文件会话与终端标签。

文件面板负责浏览目录、上传下载、拖拽传输和远程文件操作;SSH 终端负责执行交互式命令。两者放在同一个主窗口中,但在实现和生命周期上保持独立。

这种组合不是简单地“再增加一个终端页面”,而是让 DirBridge 从单一的文件传输工具,逐步变成一个面向远程操作的桌面工作台。

当前内嵌终端已经支持:

  • 多个独立 SSH 终端标签;
  • ANSI 颜色和基础终端属性;
  • 光标、滚动历史和窗口尺寸变化;
  • 文本选择、复制和粘贴;
  • 中文输入、双宽字符和组合字符;
  • Tab、方向键及常用终端键盘操作;
  • 终端区域最大化;
  • 右键直接粘贴。

二、为什么文件管理之后还需要 SSH

以一次常见的部署过程为例,操作可能包括:

  1. 在本地找到构建产物或配置文件;
  2. 通过 SFTP 上传到服务器的目标目录;
  3. 登录同一台服务器;
  4. 检查文件是否到位;
  5. 执行部署脚本、重启服务或查看日志;
  6. 根据结果继续修改和上传文件。

文件传输与命令操作本来就是连续发生的,但传统工作方式经常需要在文件管理器和终端软件之间来回切换。

DirBridge 加入 SSH 终端后,可以从当前 SFTP 站点或远程文件会话直接进入同一服务器的终端。连接信息来自已有站点,文件面板和终端也可以同时保留在界面中。

这样,用户关注的不再是“应该打开哪个工具”,而是当前任务本身:文件是否上传成功,命令是否执行完成,服务器返回了什么结果。


三、文件操作与命令操作形成连续工作流

加入 SSH 终端后,DirBridge 可以覆盖一条更完整的远程操作流程:

选择本地文件 ↓ 上传到 SFTP 远程目录 ↓ 从当前站点或会话打开 SSH 终端 ↓ 进入相同的远程目录 ↓ 检查文件并执行命令 ↓ 根据结果继续上传、下载或编辑

整个过程中,本地文件、远程目录、传输结果和终端输出都能在同一个窗口中看到。

1. 上传文件

首先在文件面板中选择本地文件并上传到目标目录,通过传输状态确认任务已经完成。

2. 打开 SSH 终端

DirBridge 为 SSH 终端保留了两个入口,SSH 终端可以复用已保存 SFTP 站点的连接信息。

上传完成后,可以从已保存的 SFTP 站点直接打开 SSH 终端:

如果当前正在操作一个已经打开的 SFTP 远程文件会话,也可以从对应的会话标签打开终端:

这两个入口是同一步骤的两种选择,不需要依次执行。前者适合从站点开始操作,后者适合在文件管理过程中继续进入终端。

3. 进入目录并执行命令

SSH 连接建立后,可以进入刚才上传文件的远程目录,使用pwdls -l或其他测试命令检查文件和环境。

上面的四张截图分别展示了文件上传、两种终端入口和命令执行结果,完整呈现了从文件管理进入远程命令操作的过程。

这种体验对远程编辑同样有帮助。远程文件可以使用 Windows 默认应用打开,保存后同步回原路径;随后可以直接切换到终端进行格式检查、运行脚本或观察程序输出。

DirBridge 并没有把所有功能强行揉成一个流程,而是让文件管理、远程编辑和终端在需要时自然衔接。


四、SSH 终端与 SFTP 不是同一条连接

虽然 SFTP 和 SSH 都与远程服务器有关,但它们在 DirBridge 中承担不同职责。

SFTP 文件链路主要负责:

  • 远程目录读取;
  • 文件上传和下载;
  • 新建、删除、重命名和移动;
  • 远程文件编辑同步;
  • 传输任务、进度和失败状态管理。

SSH 终端链路主要负责:

  • 启动交互式远程 Shell;
  • 接收键盘输入并持续显示远程输出;
  • 维护光标、颜色、屏幕状态和滚动历史;
  • 处理窗口尺寸变化;
  • 管理每个终端标签的连接与关闭过程。

DirBridge 的 SFTP 文件功能继续由 libcurl 和原有传输体系负责,SSH 终端则通过 Windows ConPTY 与系统 OpenSSH 客户端建立独立链路。

这样划分有几个直接好处:

  • 关闭或断开一个文件会话,不会自动关闭已经创建的终端;
  • 一个终端连接失败,不会中断正在进行的文件传输;
  • 多个终端标签可以分别维护自己的输入、输出和生命周期;
  • 文件传输队列不需要承担交互式终端字节流。

两条链路共享用户入口和工作场景,但不会因为界面整合而混淆各自职责。


五、Windows 原生 SSH 终端技术路线

DirBridge 当前采用的终端链路可以概括为:

输入会从 Qt 界面传递到终端会话,再经过 ConPTY 和ssh.exe发送到远程服务器;服务器返回的内容则沿相反方向进入终端内核,最终由 Qt 控件绘制到界面上。

1. 使用系统 OpenSSH 建立连接

DirBridge 没有重新实现 SSH 协议,而是使用 Windows 自带的 OpenSSH 客户端,也就是ssh.exe,完成远程登录和数据传输。

主机指纹验证、SSH 密钥、Agent 和known_hosts等能力仍由 OpenSSH 负责。这样既可以复用 Windows 已有的 SSH 环境,也能避免在应用内部维护另一套 SSH 协议实现。

2. 使用 ConPTY 承载交互式终端

ssh.exe是一个控制台程序,Qt 图形界面不能只靠普通输入输出重定向,就完整支持光标移动、窗口尺寸变化和全屏终端程序。

DirBridge 使用 Windows ConPTY 在图形界面与ssh.exe之间建立伪终端通道。它负责传递键盘输入、终端输出和窗口尺寸变化,让远程 Shell 获得接近真实终端的运行环境。

每个终端标签都有独立的终端代理进程,用来管理自己的 ConPTY、ssh.exe和输入输出通道。关闭某个终端标签不会影响其他终端,也不会因为文件会话断开而结束已经建立的 SSH 连接。

3. 使用终端内核解析和绘制内容

ConPTY 负责传递终端数据,但不会替应用解释颜色、光标位置、字符宽度和屏幕状态。

DirBridge 使用 Ghostty VT 运行库维护终端状态,再把解析后的画面交给 Qt 控件绘制。Qt Widgets 负责标签、布局、键盘、输入法、文本选择和最终显示。

这也是为什么内嵌终端不能简单地使用一个多行文本框实现。一个真正可交互的终端还需要正确处理 ANSI 颜色、中文双宽字符、滚动历史、光标控制,以及vimtop等全屏终端程序使用的屏幕模式。


六、运行环境、兼容性与当前限制

DirBridge 当前面向 Windows x64,内嵌 SSH 终端还依赖以下系统能力:

  • Windows ConPTY;
  • Windows 系统 OpenSSH 客户端。

发布包已经包含 Qt、libcurl、Ghostty VT 和必要的运行组件,但系统 OpenSSH 仍需由当前 Windows 环境提供。

DirBridge 将 SSH 终端作为一项相对独立的能力。即使当前环境不满足终端运行条件,FTP/SFTP 文件浏览和传输功能也不应该受到影响。这种边界可以避免为了增加终端功能,直接提高整个文件管理工具的最低系统要求。

不同 Windows 版本在 ConPTY 的关闭和资源回收行为上可能存在差异。为此,DirBridge 使用独立终端代理进程隔离每个终端会话,使终端标签关闭或异常退出时,相关进程和资源能够沿明确边界回收,而不会影响长期运行的主界面进程。

目前项目已经验证了终端创建、输入输出、窗口尺寸调整、重复连接和关闭流程。不过,不同 Windows 版本、服务器环境、远程 Shell 和网络条件仍可能带来差异。

vimnanotop等全屏程序,以及中文输入、复制粘贴和长时间运行会话,仍需要在更多真实环境中持续验证。项目当前仍处于迭代阶段,在重要数据环境中使用前建议保留备份,并优先在专用测试目录中确认自己的工作流程。


七、当前状态与后续方向

截至本文编写时,DirBridge 已发布v0.7.2

SSH 终端并不是一个孤立增加的页面。它与文件浏览、文件传输和远程编辑共同组成了 DirBridge 当前的远程操作流程:

  • 通过本地与远程文件面板管理文件;
  • 使用传输队列查看上传、下载和目录任务;
  • 使用 Windows 默认应用编辑远程文件并同步回服务器;
  • 从 SFTP 站点或文件会话直接打开 SSH 终端;
  • 在终端中继续执行命令、检查文件和查看运行结果。

在加入 SSH 终端之后,项目也继续完善了远程文件操作、目录传输状态、任务取消、列表状态保持和远程编辑缓存等基础体验。

这些改进的目标不是单纯增加功能数量,而是让用户在处理文件、执行命令和查看结果时,始终能够明确当前操作对象和执行状态,不同文件会话、传输任务和终端连接之间也不会互相干扰。

接下来,DirBridge 会重点推进:

  • 在更多 Windows 版本和真实服务器环境中验证 SSH 终端;
  • 完善全屏终端程序、中文输入和复制粘贴体验;
  • 优化终端连接失败、关闭和异常退出时的提示;
  • 继续提高远程文件操作和传输流程的稳定性;
  • 根据实际使用反馈完善文件管理、远程编辑与命令操作之间的协作体验。

DirBridge 仍处于持续开发阶段。当前目标不是快速扩展成一个大而全的远程管理平台,而是在清晰的模块边界下,把文件管理、文件传输、远程编辑和 SSH 命令操作逐步连接成一套稳定、顺畅的工作流。


总结

第一阶段的 DirBridge 解决了本地与远程服务器之间的文件管理问题。加入内嵌 SSH 终端后,它开始继续解决文件到达服务器之后的操作问题。

从 SFTP 站点或远程文件会话打开终端,可以减少重复查找连接信息和切换工具的过程;独立的 SFTP 与 SSH 链路,则让文件传输和交互式命令各自保持清晰职责。

对我来说,这次迭代的价值不只是把 ConPTY 和 OpenSSH 接入 Qt 界面,而是让“上传文件、执行命令、查看结果、继续调整”成为一条更自然的工作流。

如果你也对 C++/Qt 桌面开发、Windows 终端、OpenSSH 或远程文件管理工具感兴趣,欢迎关注 DirBridge,也欢迎反馈实际使用中遇到的问题。

GitHub:https://github.com/shy117/DirBridge
Releases:https://github.com/shy117/DirBridge/releases

http://www.jsqmd.com/news/1336622/

相关文章:

  • 冷暖一体机哪个品牌适合自建房安装:【芬尼】自建房优选 - 17328623207
  • 计算机毕业设计基于知识图谱(Neo4j)和大语言模型(LLM)的图检索增强(GraphRAG)的地质矿产知识管理智能问答系统 人工智能 大模型毕业设计(源码+文档+PPT+讲解)
  • Hive性能调优实战:从基础配置到高级技巧
  • 有哪些靠谱、不容易翻车的 AI 毕业论文辅助工具推荐?
  • 卷积神经网络(CNN)原理详解:从核心组件到PyTorch实战
  • 如何用Teable在5分钟内搭建企业级数据协作平台?终极指南
  • H3C交换机Console登录与SSH远程管理配置全流程详解
  • 玩客云(S805)刷 Armbian + CasaOS 完整全流程
  • Python数据分析实战:从增速放缓预测内容增长潜力
  • 大户型家用冷暖系统推荐哪个品牌:【芬尼】大户型适配 - 17728181569
  • SM2是中国国家密码管理局发布的基于椭圆曲线密码学(ECC)的非对称加密算法标准
  • 嵌入式系统时钟配置实战:从原理到低功耗调试全解析
  • php8 常量折叠
  • 构建可回退的30天模型验收流程:平衡创新与稳定的工程实践
  • 从ChatGPT提示词到Shopify商品页:AI模板产品化全链路拆解(含自动交付系统部署脚本)
  • 跨境电商图片翻译工具推荐:批量处理视频字幕与抠图
  • php的结构是什么?
  • GameFramework-Next:解决Unity游戏开发痛点的下一代框架
  • 网约车平台分账架构实践:网约车小程序如何解决司机结算、二清与延迟分账难题
  • 3步搞定漫画翻译:BallonsTranslator智能翻译工具完全指南
  • 现在好用的 AI 论文写作工具有哪些品牌?聊聊真实使用体验
  • 每日一句 | 这音乐永不老去——当代码遇上诗意,谈谈那句触动灵魂的英文乐评
  • Android开发构建工具链版本对齐:AGP、Gradle、JDK与Android Studio兼容性全解析
  • Windows下Python C扩展编译错误:cl.exe失败原因与解决方案
  • LEFT JOIN与INNER JOIN性能深度对比:从执行计划到实战优化
  • 2026年镇江变压器围生产厂家哪家可靠实用选购指南 - 品牌优推
  • GPT-5.6 Sol与区块链AI应用:技术本质、生态选择与风险鉴别
  • 智能脚本解决方案:5分钟自动化你的日常工作流程
  • 同步解调器:从模拟乘法到数字锁相环的实现原理与工程实践
  • MySQL JDBC驱动下载与配置全攻略:从Maven依赖到连接字符串避坑