10 Commits

Author SHA1 Message Date
ymq
e479b347bd fix: remote_host 清理复制粘贴带入的零宽/BOM 不可见字符 2026-08-14 14:49:01 +08:00
ymq
70185771d0 fix: 远程目录 ~ 展开改用 $HOME(shlex.quote 会把 ~ 包进单引号不展开)
- _resolve_remote_dir → _rel_remote_dir 返回纯相对路径
- rsync 用 :~/,ssh mkdir/bwrap --bind 用 $HOME/rel 让远程 shell 展开
- 加强 remote_dir 安全字符校验(_REL_DIR_RE,防 shell 注入)
2026-08-14 14:26:29 +08:00
ymq
cfaf48ed5d fix: 远程迁移前 mkdir -p(相对路径多级目录 rsync 不递归建父目录) 2026-08-14 14:22:36 +08:00
ymq
dc4379b235 feat: 远程目录 remote_dir 改用相对路径(从远程用户 home 目录开始)
- 新增 _resolve_remote_dir(相对→~/xxx)+ _validate_remote_dir(防绝对路径/..穿越)
- 移除 _FORBIDDEN_DIRS 系统目录黑名单(相对路径天然限制在 home 内)
- rsync 迁移 + bwrap --bind 统一走 _resolve_remote_dir
2026-08-14 14:20:47 +08:00
ymq
939fd252ec security: 机构独立 SSH key + host key 校验(accept-new 防 MITM)
- ensure_org_key: 每机构独立 ed25519 key pair(~/.ssh/org_keys/<org_id>/),防单点泄露
- org 级远程模式自动用机构 key,不允许指定任意 key
- StrictHostKeyChecking=no → accept-new,首次记录后严格校验 host key 防 MITM
2026-08-14 11:58:48 +08:00
ymq
4fe5f17490 fix: remote_dir 根目录绕过(rstrip 后空串检查) 2026-08-14 11:27:45 +08:00
ymq
8371d95101 security: 工作环境远程配置安全校验 + 迁移顺序修正
- _validate_remote: host/user/port/dir/key 校验,防注入与防 rsync --delete 删系统目录
- remote_key_path 限制 ~/.ssh/ 下,防读任意私钥
- remote_dir 禁止系统目录(含 migrate_work_dir 纵深防御)
- 先迁移成功再写 DB,迁移失败不回写 mode(状态一致)
2026-08-14 11:26:34 +08:00
ymq
17b90c8c12 fix: 远程→本地迁移用旧环境远程配置(而非空的新data) 2026-08-14 11:16:12 +08:00
ymq
7e0a3d1d93 fix: 远程沙箱 bwrap 路径探测(PATH 优先回退 ~/bin/bwrap) 2026-08-14 11:15:03 +08:00
ymq
262d678e2a feat: 工作环境管理(沙箱本地/远程切换 + 目录迁移)
- work_env.py: get/set_work_env(用户/机构维度,缺省local)、rsync目录迁移、远程SSH+bwrap沙箱、远程bwrap部署
- run_in_work_env: 按mode分发本地bwrap/远程SSH+bwrap
- sd_work_envs 表 DDL
2026-08-14 11:12:54 +08:00