- 受密码保护的WebShell,支持GET/POST执行命令,可选携带session保持工作目录与上下文
- 会话持久化当前工作目录、环境快照、首选shell、命令历史、用户/组、资源探测(CPU/内存/磁盘)与主机元数据(OS/arch/hostname/uname等)
- 前端一页式:命令输入、会话选择/新建、历史会话列表(详情/删除)、文件上传/下载(进度条、可取消)
- 文件上传(multipart,支持指定目标路径)与文件下载(支持中途取消);单次上传总大小默认上限 2GiB(可用环境变量
MAX_UPLOAD_SIZE(字节)调整),表单字段(如 path)上限 64KB,防止异常/恶意请求耗尽磁盘或内存 - API 纯文本/JSON 返回,便于脚本调用
# 启动服务(示例)
./SimpleWebShell -key 123456 -port 8878 -shell /bin/bash
# 浏览器访问
# http://<host>:8878/?key=123456必须提供 -key。默认 shell 为 /bin/bash(Windows 推荐 cmd),默认端口 8878。
| 参数 | 默认值 | 说明 |
|---|---|---|
| -key | (必填) | 访问密码 |
| -shell | /bin/bash | 执行命令所用 shell 路径 |
| -port | 8878 | 监听端口 |
| -tls | false | 启用 HTTPS(需同时指定证书与私钥) |
| -cert | (空) | TLS 证书文件路径(PEM 格式) |
| -keyfile | (空) | TLS 私钥文件路径(PEM 格式) |
默认以 HTTP 启动;如需 HTTPS,自行准备 PEM 格式证书与私钥后启动:
# 生成自签名证书(仅测试用)
openssl req -x509 -newkey rsa:2048 -nodes \
-keyout server.key -out server.crt -days 365 -subj "/CN=your.host"
# 启用 HTTPS
./SimpleWebShell -key 123456 -tls -cert ./server.crt -keyfile ./server.key -port 8878
# 浏览器访问
# https://<host>:8878/?key=123456启动时会校验证书与私钥文件存在、格式为 PEM 且配对一致,不匹配将直接报错退出。 生产环境请使用受信任 CA 签发的证书,或在前置反向代理(Nginx/Caddy 等)处终结 TLS。
| 接口 | 方法 | 必要参数 | 说明 |
|---|---|---|---|
/ |
GET | key | 返回前端页面(key 正确)或版本字符串(错误) |
/get |
GET | key, cmd,(session) | 执行命令;可选 session 保持目录/上下文 |
/post |
POST | key, cmd,(session) | 同上,支持 JSON/Form,session 可选 |
/get_current_path |
GET | key,(session) | 返回当前目录;session 可选,未提供则返回服务进程目录 |
/file_send |
POST | key | multipart 上传,字段:file、path(可选) |
/file_receive |
GET | key, path | 下载指定文件,支持取消 |
/session_create |
GET | key | 新建 session,返回 session key |
/session_list |
GET | key | 列出 session(id 与当前目录) |
/session_delete |
GET | key, session | 删除指定 session |
/session_get |
GET | key, session | 返回 session 详细 JSON |
- 创建时自动探测:Owner/Groups、环境变量快照、首选 Shell、Git 分支、CPU/内存/磁盘容量、hostname/OS/arch/uname 等元数据,探测失败则跳过,不影响使用。
- 会话保存当前工作目录,
cd操作写入会话;命令执行成功后写入 History(限长 200 条)。 - 命令/路径类接口:传入 session 参数即在该会话目录下运行;不传则使用服务进程目录。
- 自动清理:空闲超过 24 小时的会话会被后台协程清理,会话总数上限 1000(超出时清理最久未访问者),防止长期运行内存无限增长;活跃会话不受影响。
- 顶部会话栏:默认不使用session,可勾选“使用session”,点击“新建session”生成并自动启用;列表可查看详情/删除,详情以弹窗展示完整JSON。
- 命令区:输入命令,选择GET/POST(POST可选JSON/Form),回车或点“执行”。
- 上传:选择文件,可填目标全路径(默认当前目录),显示进度,可取消。
- 下载:输入文件全路径,显示进度,可取消。
- 仅供合法授权场景(远程运维/边缘计算热更新等),请妥善保管密码并限制网络可达性。
- 支持原生 HTTPS(
-tls参数并指定证书/私钥),建议公网暴露时启用;也可在前置反向代理处终结 TLS。
