mirror of
https://github.com/chaos-zhu/easynode.git
synced 2026-10-07 15:28:39 +08:00
- 规范:login flow 去掉公钥指纹本地存储与变更对比;强提示限定在 HTTP 协议,RSA 公钥仍需用于加密登录密码与一次性 AES key。 - 规范:scope/测试列表加入移动端 deviceId(UUID v4,secure storage, 随登录上送),并在 SSH credential API 规则里点明 base64-then-RSA 回环 与错误信息脱敏要求。 - 实施计划:替换 fingerprint 子任务为 device_id;明确 jwtExpires 与 server/app/controller/user.js 中 beforeLoginHandler 兼容;rsa_crypto 在加密临时 key 前先 base64 编码 keyBytes;terminal 控制器新增 writeInput 将工具栏输入直发 SSH session;SSHKeyPair.fromPem 直接 使用其返回的 List;登录流程加入 deviceId 取出/生成与上送。 - server/app/controller/mobile.js:require terminal 提至顶端,端口 解析容错并保留 22 默认值,res.fail 仅返回通用错误,详细信息只写日志。
面板服务端
- 基于Koa
HTTPS 配置
服务支持三种 HTTPS 配置模式:
- 模式 0: 关闭 HTTPS (默认)
- 模式 1: 自动生成自签名证书
- 模式 2: 使用自定义证书路径
详细配置说明请查看: HTTPS 配置文档
快速开始:
# .env 文件
ENABLE_HTTPS=1 # 0:关闭 1:自签证书 2:传入证书路径
HTTPS_PORT=8092
遇到的问题
MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 input listeners added to [Socket]. Use emitter.setMaxListeners() to increase limit
- ssh连接数过多(默认最多11个)
- 每次连接新建一个vps实例,断开则销毁
Error signing data with key: error:0D07209B:asn1 encoding routines:ASN1_get_object:too long
- 经比对,ssh的rsa密钥在前端往后端的存储过程中丢失了部分字符
获取客户端信息:跨域请求客户端系统信息,建立ws socket实时更新网络
- 问题:服务端前端套上https后,前端无法请求客户端(http)的信息, 也无法建立ws socket连接(原因是https下无法建立http/ws协议请求)
- 方案1: 所有客户端与服务端通信,再全部由服务端与前端通信(考虑:服务端/客户端性能问题). Node实现http+https||nginx转发实现https
- 方案2: 给所有客户端加上https(客户端只有ip,没法给个人ip签订证书)
构建运行包
坑
log4js: 该module使用到了fs.mkdir()等读写api,pkg打包后的环境不支持,设置保存日志的目录需使用process.cwd()】
win闪退: 在linux机器上构建可查看输出日志
客户端
构建客户端服务, 后台运行
nohup ./easynode-server &
功能:服务器基本信息【ssh信息保存在主服务器】