开发说明

因服务器网络策略限制仅开放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

构建与部署

  1. 下载依赖(首次 Build)

    mvn dependency:resolve
    
  2. 编译打包

    mvn clean package
    

    产物 target/server-manager.war

  3. 部署到 Tomcat

    • 复制到 TOMCAT_HOME/webapps/,或
    • 使用 Tomcat Manager 上传部署
  4. 启动服务
    访问 http://<host>:8080/server-manager/

  5. 账号登录
    用户: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.jsonenabled 设置为 false 后重启

环境 / 依赖本地化

webapp/vendor 已包含:

  • xterm/xterm.cssxterm.min.js
  • xterm-addon-fit/xterm-addon-fit.min.js
  • xterm-addon-web-links/xterm-addon-web-links.min.js
  • jsencrypt/jsencrypt.min.js

项目概览

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


项目地址

(待补充)

项目war包地址

(待补充)


Logo

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

更多推荐