尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

WaLiSSH 实战:基于 JSch 实现 SSH 连接云服务器,搭建 AI Shell 智能体能力的地基

发布时间:2026/9/27 8:36:58

资讯中心
01
ARTICLE

WaLiSSH 实战:基于 JSch 实现 SSH 连接云服务器,搭建 AI Shell 智能体能力的地基

WaLiSSH 实战:基于 JSch 实现 SSH 连接云服务器,搭建 AI Shell 智能体能力的地基
文档教程后端【免费下载链接】CodeGuide:books: 本代码库是作者小傅哥多年从事一线互联网 Java 开发的学习历程技术汇总旨在为大家提供一个清晰详细的学习教程侧重点更倾向编写Java核心内容。如果本仓库能为您提供帮助请给予支持(关注、点赞、分享)项目地址https://gitcode.com/gh_mirrors/code/CodeGuide点击查看免费下载本篇是《WaLiSSH - AI Shell 智能终端》项目的第 1-3 节内容梳理。文章围绕如何在 Spring Boot 工程中完成 SSH 连接能力对接这一核心目标展开介绍 JSch 技术选型、SSH 协议与认证机制以及 DDD 架构下 Domain 层 Port 接口与 Infrastructure 层实现分离的设计思想。读完本文你将理解 AI Shell 运行时智能体与底层 Shell 能力的关系掌握 SSH 会话建立、远程命令执行、SFTP 文件传输这三类能力的适用范围并看清 WaLiSSH 后续章节库表设计、领域设计、接口对接、终端命令处理如何在这块地基上逐层构建。一、本章诉求先搭起 AI Shell 的 Shell 能力WaLiSSH 的目标是构建一个AI Shell 运行时智能体。可以简单地把运行时智能体理解为对用户的请求进行意图识别LLM Prompt 上下文再根据具体场景诉求与相关的mcp、skills、tool、cli进行交互操作直至完成用户请求。要做 AI Shell第一步就是先把与服务器的Shell 能力建立起来——也就是本节的核心内容在 Spring Boot 工程中对接 SSH。之后再把 Shell 能力包装为工具Tool和相应的提示词Prompt让 LLM 大模型可以识别到这样就完成了最简单的 AI Shell 能力闭环。需要特别强调的是这套流程是通用的当你完整学完 WaLiSSH 中SSH 能力 → 工具化 → 提示词 → LLM 意图识别这一套流程后就可以横向复用到 AI MySQL、AI Redis、AI Coding甚至互联网公司里最常见的 AI 智能客服等场景。SSH 连接只是第一个载体方法论的收益远超这一个功能点。敲黑板这一节的代码量不大核心也不只是写出代码更重要的是理解 DDD 架构下Domain 层 Port 接口与 Infrastructure 层实现的分离。掌握了这个设计思想以后无论底层换成什么 SSH 库Domain 层的代码一行都不用改。二、技术选型为什么使用 JSchSSH 对接选用JSch——纯 Java 实现的 SSH2 协议库成熟稳定后续还会基于它实现命令执行和 SFTP 文件传输这一选型并不局限你也可以检索其他 SSH 协议库多方面对比。在项目整体技术栈中JSch 与 Spring Boot、Google ADK 等一起构成了 WaLiSSH 服务端walissh-server的核心依赖正如第1-1节初始化工程搭建中所列后端采用 DDD 领域驱动设计 Spring Boot Google ADKAgent Development Kit JSch其中 JSch 负责 SSH 连接、远程命令执行、文件传输是实现 SSH 终端功能的核心依赖。2.1 SSH 协议基础SSHSecure Shell是一种加密的网络传输协议用于在不安全的网络中安全地远程登录和执行命令。可以把 SSH 理解为一条加密的隧道客户端与服务器之间的所有数据都在隧道内安全传输外人无法窃听或篡改。SSH 连接支持两种认证方式两者各有适用场景认证方式优点缺点适用场景密码认证简单直观无需额外配置安全性相对较低需要每次输入密码快速测试、临时连接密钥认证安全性高支持免密登录需要生成和管理密钥对生产环境、自动化运维在 WaLiSSH 的实现中两种认证方式都支持且互斥使用——优先使用密钥没有密钥则走密码。这一认证策略决定了后续连接配置的数据结构一条 SSH 连接需要同时承载认证方式与认证凭证两类信息这与第1-4节ssh连接配置库表设计中认证方式密码 or 私钥、认证凭证密码 or 私钥内容字段的设计完全对应。2.2 JSch 库的三个核心能力JSch 是 Java Secure Channel 的缩写提供了完整的 SSH2 客户端功能包括端口转发本地 / 远程 / 动态文件传输SFTP执行远程命令X11 转发在 WaLiSSH 项目中主要使用它的三个能力并且三者分别在项目的不同阶段落地能力对应通道落地阶段建立 SSH 会话Session本节实现执行远程命令ChannelExec本节测试时验证使用 IntelliJ IDEA创建 SFTP 通道ChannelSftp后续章节使用文件上传 / 下载在 Spring Boot 工程中引入 JSch 依赖对应文档给出的 mwiede 维护分支的坐标形式后就可以围绕Session建立加密会话、通过ChannelExec执行远程命令、通过ChannelSftp传输文件这三条通道共同构成了 WaLiSSH 面向云服务器的基础操作面。三、DDD 架构下的对接设计Port 接口与 Infrastructure 实现分离本节在工程落地上最值得学习的设计点是 DDD 分层带来的依赖倒置Domain 层只定义 Port 接口领域层不关心 SSH 具体怎么连、用什么库连只声明业务需要的连接、执行、断开等能力契约Infrastructure 层提供实现JSch 相关的会话建立、参数装配、连接建立等细节全部沉淀在基础设施层由 Port 接口的实现类承载。这样做的好处非常直接未来无论底层从 JSch 换成其他 SSH 库比如 Apache MINA SSHDDomain 层的业务代码一行都不用改只替换 Infrastructure 层的实现即可。这也是后续章节反复强化的 DDD 设计主线——第1-5节连接SSH简单领域设计正是在此基础上把 SSH 连接的增删改查与建立/断开操作封装进领域服务并强调领域层关注业务规则设计而不是调数据库。同时要注意SSH 连接参数不只是主机 用户名 密码这么简单。结合第1-4节ssh连接配置库表设计的需求分析一条连接配置至少包含以下三类信息它们最终都会在 Infrastructure 层装配到 JSch 的Session上基础连接信息连接名称如腾讯云服务器主机地址如140.143.183.225端口号默认22用户名如root、ubuntu认证方式密码 or 私钥认证凭证密码 or 私钥内容高级配置信息连接超时时间默认 10 秒保活间隔默认 60 秒是否启用压缩是否严格检查主机密钥已知主机密钥列表连接后执行的启动命令系统管理信息用户ID区分不同用户的连接配置连接状态未连接、已连接、连接中、连接失败加密标志标识凭证是否加密创建时间、更新时间逻辑删除标志其中连接超时时间保活间隔是否严格检查主机密钥等高级配置在 JSch 中都有对应的会话参数设置项Infrastructure 层实现时把这些配置逐项映射到Session的配置接口上即可加密标志则对应凭证密码/私钥在数据库中的加密存储方案。四、从 Session 到终端本节之后的完整落地链路本节建立的 SSH 连接能力不是终点而是 WaLiSSH 系列课程的起点。从第1-3节ssh连接云服务器往后这条能力链路的走向非常清晰持久化连接配置第 1-4 节把上文提到的连接信息拆分为ssh_connection与ssh_connection_config两张表存储涉及表拆分设计、字段类型选择varchar、tinyint、longtext、索引设计主键、唯一索引、普通索引以及密码/私钥的加密存储方案封装领域服务第 1-5 节把 PO、DAO、Mapper 向上封装到 Domain 层形成 SSH 连接管理领域服务完成创建、查询、更新、删除连接配置以及建立/断开连接等能力并配套单测验证暴露 HTTP 接口第 1-6 节服务端提供SshConnectionController封装领域服务把操作 SSH 服务器的能力通过创建连接、更新连接、删除连接、获取连接、连接列表等接口对外暴露前端通过api/request.ts与接口对接实现终端命令交互第 1-7 节JSch 的Session与ChannelExec在这里被真正盘活。前端 xterm.js 的输入路径为用户在终端敲键盘 →onData事件拿到输入字符 → 写入缓冲10ms 批量合并→ 调用POST /terminal/write发到后端 → 写入 JSch Shell 的OutputStream→ 远程 Shell 收到字符并执行输出路径为远程 Shell 产生输出 → 后台读取线程持续从 JSchInputStream读取 → 写入StringBuilder缓冲区 → 前端每 50ms 调用GET /terminal/read轮询 → 拿到输出后terminal.write()渲染到 xterm.js。这里没有用 WebSocket 而是采用 HTTP 轮询是因为 WaLiSSH 是 Tauri 桌面应用前后端都在本地网络延迟极低50ms 轮询对终端操作完全够用且实现更简单。而ChannelSftp通道则在后续文件能力中承担上传/下载职责对应 WaLiSSH 产品中打开本地多个文件夹、切换选择、上传文件的 SFTP 增强体验详见项目总览文档。五、小结本节完成了 WaLiSSH 从空工程到具备服务器连接能力的关键一步能力定位SSH 连接是 AI Shell 运行时智能体的手脚意图识别与工具编排是大脑先有手脚才能谈智能技术底座JSch 以Session/ChannelExec/ChannelSftp三个通道覆盖会话建立、命令执行、文件传输配以优先密钥、兜底密码的互斥认证策略架构纪律Domain 层 Port 接口与 Infrastructure 层实现分离让 SSH 库的更换不影响业务代码这是整条 DDD 学习主线的起点也是后续库表设计、领域服务、HTTP 接口、终端命令处理逐层构建的根基。掌握本节之后你已经拥有了把任意一台云服务器接入WaLiSSH 的能力接下来的章节将在这条加密隧道之上逐步装配智能体的意图识别与工具调用让 AI 替你执行运维命令。赞分享文档教程后端【免费下载链接】CodeGuide:books: 本代码库是作者小傅哥多年从事一线互联网 Java 开发的学习历程技术汇总旨在为大家提供一个清晰详细的学习教程侧重点更倾向编写Java核心内容。如果本仓库能为您提供帮助请给予支持(关注、点赞、分享)项目地址https://gitcode.com/gh_mirrors/code/CodeGuide点击查看免费下载相关推荐WaLiSSH基于 Spring AI Google ADK Tauri 的 AI Shell 智能运维终端实战WaLiSSH基于 Spring AI Google ADK Tauri 的 AI Shell 智能运维终端实战 WaLiSSHAI Shell 智文档教程后端LunaTranslator 语音指定与语音修正按人物角色自动切换 TTS 声音的完整指南LunaTranslator 语音指定与语音修正按人物角色自动切换 TTS 声音的完整指南 导读 在视觉小说等文本型游戏中不同角色通常需要不同的语音才能还文档教程后端WaLiSSH 智能体实战引入 FunctionTool 构建最小 MVP 版本 AI Shell AgentWaLiSSH 智能体实战引入 FunctionTool 构建最小 MVP 版本 AI Shell Agent WaLiSSH 是一款基于 Spring AI文档教程后端上一篇越狱设备应用装不上从一次被拒收的 IPA 说起看懂 iOS 签名绕过下一篇GitHub_Trending/ha/Hacktoberfest2023项目前端模块化开发实践ES6模块与代码分割创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。