Java版Web运维工具:基于pty4j+xterm.js技术栈,在80/8080受限端口实现Web SSH终端与文件传输双功能
一个基于 Java Servlet + WebSocket 的浏览器终端,直接在服务器本机执行命令,并附带文件管理、命令过滤、IP 白名单等安全能力。适合内网运维主机管控。类似Xshell+Xftp功能Web集成。
·
开发说明
因服务器网络策略限制仅开放80端口(Nginx反向代理),传统SSH/FTP等运维工具无法直接访问。本项目通过开发Web版运维工具,在80端口通道内实现"终端操作+文件传输"双核心功能,完美解决特殊网络环境下的远程运维需求。目前主要支持Llinux服务器(命令+文件),Windows命令存在部分问题待修复。
部署环境:JDK8、Tomcat7**
特别说明
本项目完全使用cursor大模型开发
服务器管理终端(Server Manager)
一个基于 Java Servlet + WebSocket 的浏览器终端,直接在服务器本机执行命令,并附带文件管理、命令过滤、IP 白名单等安全能力。适合内网运维主机管控。类似Xshell+Xftp功能Web集成。
功能总览
| 模块 | 能力 |
|---|---|
| Web 终端 | PTY4J 模拟真实 Shell,支持 vim / tail -f / Tab 补全 / Ctrl 系列快捷键;右侧命令速查、实时输出复制、连接数监控 |
| 登录安全 | RSA 前端加密、BCrypt 密码、验证码、人机验证、失败锁定、Session 过期(60分钟) |
| 命令过滤 | 默认阻止 rm -rf / 等危险命令;支持在线管理黑名单、命令测试、魔术口令 |
| IP 白名单 | 可选开启,仅允许指定 IP / CIDR 访问;所有修改需再次输入密码 |
| 文件管理 | 类 Finder 的文件浏览器,拖拽上传、断点续传(2MB 分片)、批量进度、文件下载、目录创建 |
| 终端状态 | WebSocket 双向通信,客户端定时查询当前活跃连接数 |
| 会话安全 | HttpOnly/Secure Cookie、AuthFilter 统一守卫、超时后自动跳回登录页 |
技术栈
- 语言 / 平台:Java 8、Servlet 3.1、WebSocket API
- 依赖:PTY4J(Linux 原生终端体验)、Gson、BCrypt、JSEncrypt
- 前端:原生 HTML/CSS/JS + xterm.js、FitAddon、WebLinksAddon(已本地化到
webapp/vendor) - 构建 / 部署:Maven、WAR 包、Tomcat 7.0.100+(推荐 8.5+)
目录结构
server-manager/
├── pom.xml
├── README.md
├── src/
│ └── main/
│ ├── java/com/servermanager
│ │ ├── auth/ 登录、验证码、RSA、过滤器
│ │ ├── config/ ServletContext 初始化、命令/白名单配置接口
│ │ ├── file/ 文件列表 / 上传 / 下载
│ │ ├── filter/ Session Cookie 加固
│ │ ├── security/ CommandFilter、IPWhitelist
│ │ ├── ssh/ SSHConnection(PTY/ProcessBuilder)
│ │ └── websocket/ WebSocket 端点 & 连接统计
│ └── webapp/
│ ├── index.html 登录页
│ ├── terminal.html 终端页
│ ├── files.html 文件管理器
│ ├── config.html 命令/白名单配置
│ ├── css/ js/ vendor/ 本地静态资源
│ └── WEB-INF/
│ ├── web.xml Servlet/Filter/Session 配置
│ ├── users.json 默认帐号
│ ├── command-config.json 命令过滤配置
│ └── ip-whitelist.json IP 白名单配置
环境要求
- JDK 1.8 或以上
- Maven 3.6+
- Tomcat 8.5+(Tomcat 7.0.100 可运行,但推荐更高版本以获得更完整的 WebSocket 支持)
- Linux/Windows 任一系统均可作为宿主(Linux 下默认
/bin/bash -i,Windows 下cmd.exe)
构建与部署
-
下载依赖(首次 Build)
mvn dependency:resolve -
编译打包
mvn clean package产物
target/server-manager.war -
部署到 Tomcat
- 复制到
TOMCAT_HOME/webapps/,或 - 使用 Tomcat Manager 上传部署
- 复制到
-
启动服务
访问http://<host>:8080/server-manager/ -
账号登录
用户:admin
密码:admin.com
密码修改:执行PasswordTool 复制passwordHash至users.json替换passwordHash
配置指南
1. 用户管理
- 文件:
src/main/webapp/WEB-INF/users.json - 字段:
username/displayName/passwordHash - 生成 BCrypt:
java -cp target/classes:<M2_HOME>/org/mindrot/jbcrypt/0.4/jbcrypt-0.4.jar \ com.servermanager.auth.PasswordTool <plainPassword>
2. 命令过滤
- WebUI:登录后点击“安全配置”
- 功能:启用/关闭过滤器、维护危险命令列表、在线测试命令
- 配置文件:
WEB-INF/command-config.json(自动持久化) - 生效范围:终端端点在发送命令前校验;被拒绝命令会发送红色提示并自动
Ctrl+C
3. IP 白名单
- 默认关闭,允许所有 IP 访问
- WebUI:与命令过滤同页,支持启停、添加/删除 IP 或 CIDR(如
192.168.1.0/24),所有动作需重新输入密码 - 服务端拦截:
IPWhitelistFilter位于过滤链最前方,阻止不在名单内的请求 - 配置文件:
WEB-INF/ip-whitelist.json
4. 文件管理
- 页面:
files.html - 能力:
- 列表 / 下载 / 新建目录
- 上传:拖拽或点击打开面板,2MB 分片断点续传,失败可继续
- 进度面板:实时展示,每个任务完成 5 秒后自动清理
- 上传接口:
uploadChunk/uploadStatus/upload(兼容老接口)
5. 会话与安全
- Session 超时:
web.xml中<session-timeout>60</session-timeout>(单位分钟) - Cookie:
SessionSecurityFilter强制 HttpOnly + Secure(若 HTTPS) - AuthFilter:除登录页、静态资源和
api/auth/*外全部需要登录 - WebSocket:握手时校验登录态,连接数通过
TerminalSessionRegistry统计
运行时体验
- 终端页面
- 顶部状态包含
●(连接状态) - 右侧面板可折叠,内含 Windows/Linux 常用命令和最近输出片段(点击即可复制并注入终端)
清屏/退出按钮位于工具栏
- 顶部状态包含
- 文件管理器
- 面板样式与登录/配置页保持一致
- 上传按钮弹出悬浮框,可点击或拖拽;进度列表会显示速度和状态
- 配置页面
- 命令过滤 + IP 白名单合并在一个控制台内
- 所有敏感操作均弹出密码验证框
- 登录页
- RSA+验证码+失败倒计时;Tab 键切换不会再出现明文 Tab 字符导致的验证失败
故障排查
| 场景 | 解决方案 |
|---|---|
| WebSocket 连接不上 / 终端空白 | 确认浏览器控制台与 Tomcat 日志;检查防火墙 8080;确认 vendor/ 目录下 xterm 资源已离线部署 |
| 输入命令被拒绝 | 查看终端红色 [安全拦截] 提示,使用“安全配置”页面测试并调整列表 |
| 登录后过一段时间自动回登录页 | Session 超时为 60 分钟,可在 web.xml 调整 <session-timeout> |
| 文件上传显示失败 | 查看浏览器 Network,确认 uploadChunk 返回值;若网络中断可重新上传,断点会自动续传 |
| IP 白名单开启后自己被锁 | 通过服务器本地浏览器访问或修改 WEB-INF/ip-whitelist.json 将 enabled 设置为 false 后重启 |
环境 / 依赖本地化
webapp/vendor 已包含:
xterm/xterm.css、xterm.min.jsxterm-addon-fit/xterm-addon-fit.min.jsxterm-addon-web-links/xterm-addon-web-links.min.jsjsencrypt/jsencrypt.min.js
项目概览




项目地址
(待补充)
项目war包地址
(待补充)
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)