Files
DCTS/docs/remote_desktop_via_jump.md
fmq f2700031ce feat(all): seed_step_stab 稳定化种子链与同族种子轮换、ladder/自适应 Teff/丰度轴延拓三级回退与梯级种子入库复用、热启动首末比豁免、workflow 完成翻转回退链阻塞修复、大气收敛权威统计与 M14 回填
收敛攻坚(81/400 失败点根因与实测,见 docs/failed81_cno_seed_popzer_dpsilg_2026_08_18.md):
- runner: 新增 seed_step_stab 策略链——同物理族(同 Teff/logg/logHe)CNO 邻居种子
  + DPSILG=3.0 λ 算子欠松弛 + POPZER=1E-10 微布居置零(联动 POPZR2/RADZER 同值
  + NITZER=1),针对 20kK He 富大气 He I/II 电离前沿布居极限环
- runner: 三级链内延拓回退(主链与 nl_direct 全败后自动触发):
  · 固定 ladder 步进——plan_ladder_steps 按归一化间隔选轴,Δlogg≤0.25/ΔTeff≤2.5kK,≤4 步
  · 自适应 Teff 延拓——步长 1250K 起、成功 ×1.5 恢复、失败二分至 25K 折叠墙,≤48 步
  · C/N 丰度轴延拓——高温域(Teff>30kK)专用,严格同族种子沿 C(优先)/N 轴 0.2 dex 起步
  延拓阶段 NITER 下限提至 300(慢收敛 waypoint 迭代饥饿误判修复)
- runner: 稳定化多档回退(DPSILG/POPZER 三档互补,联合回收 41/65);
  域门控 Teff≤30kK——高温高金属域实测旋钮致散(17 拍爆至 4e16),域外跳过
- 梯级种子持久化: 收敛中间模型登记 ladder_seeds 随上报落 server seeds 表
  (任务失败也上传,合成名 _ladder 与真实网格点零冲突),簇内相邻失败点自动复用

调度与执行:
- scheduler: 策略解析新增 seed_step_stab 臂——find_exact_family_seed_from_db 严格
  同物理族判定(不做 global 退化,防 ladder 中间种子 ΔTeff≤5000K 误命中),
  排除本点历史已用种子实现重试轮换;链在 stab 耗尽时轮换未试过同族邻居重派
- executor: seed_step_stab 补种子下载(漏列曾致 78 任务假失败,seed_nc 无 fort.8 崩溃);
  Teff>30kK 域外自动降级普通种子链

收敛判据:
- conv_check: 热启动豁免——首拍 max_relc<1(种子已近解)时首末比 1e3 判据数学上
  不可达,豁免后交五重物理硬门槛裁决(修复 nl_ladder 0.038→6e-4 物理全过被误杀);
  冷启动仍受判据门控

workflow 生命周期:
- workflows/tasks: 完成 flip 增加「未消费回退链」阻塞子句——failed 点策略链未耗尽
  或链尾 seed_step_stab 尚有未试过同族种子时不得置 completed(修复最后活跃点 cold
  失败上报抢先 flip、still_running 守卫拦截后续策略永不派发);按 failed_stage 归因
  (synspec 失败行只看 synspec 链,防 stale 审计副本永久卡死)+ json_valid 脏行防护

统计与前端:
- 统计新增权威口径 tlusty_converged(不按策略拆)与 seed_step_stab_converged 分项,
  前端详情页色带/概览卡消费权威总数并新增稳定化青色段(修复 stab 收敛点漏计,
  生产 9137/9216 差额);M14 迁移回填历史 completed 点的 tlusty_status

文档:
- 新增 failed81 POPZER/DPSILG 制胜配方根因分析、Windows 节点经跳板 RDP 运维手册;
  failed400 增补 ladder 生产化实现与第二轮 121 残点实测矩阵
2026-09-02 19:37:25 +08:00

5.8 KiB
Raw Permalink Blame History

Windows 节点远程桌面连接手册(经 Linux 跳板中转)

2026-08-20 实战总结。背景:两台 Windows 计算节点(node-fmq-dckj-02/03)与本机不直连, 必须经 Linux 跳板 node-fmq-dckj-01dckj@100.66.1.5Tailscale 网段)中转。 本机无节点小宝直连 Windows 的能力,所有 Windows 运维(尤其 Docker Desktop 登录自启) 都走本文的 SSH 隧道 + RDP 方案。

1. 网络拓扑与凭据

节点 地址 登录 密码 可达路径
跳板 dckj-01 100.66.1.5 dckj dckjzndx 本机直连
node-fmq-dckj-02 192.168.6.102 fmq 1235 仅经跳板
node-fmq-dckj-03 192.168.6.103 Administrator dev#2dckj@zndx 仅经跳板
  • Windows 侧 SSH22)和 RDP(3389)均开放,但只对跳板所在的内网段可达。
  • Windows 上运行节点小宝(内网穿透工具,服务名 NodeBabyLinkService StartMode=Auto 开机自启),负责与 dckj-01 之间的 P2P 链路—— 跳板能通 SSH 本身就说明节点小宝是活的。
  • ⚠️ 密码写在文档里仅图方便,机器若更换使用人请先改密;长期方案建议配 SSH 公钥。

2. 核心方案:SSH 隧道转发 RDP(无需在跳板装任何桌面软件)

原理:本机 ssh -N -L 建立经跳板的加密隧道,把远端 3389 映射到本机端口, 再用本机任意 RDP 客户端(Remmina / xfreerdp / GNOME Connections)连 localhost。

# 隧道一:本机 13389 → dckj-03 (192.168.6.103) RDP
sshpass -p 'dev#2dckj@zndx' ssh -N \
  -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \
  -o ServerAliveInterval=30 -o ServerAliveCountMax=6 \
  -o ProxyCommand="sshpass -p dckjzndx ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -W %h:%p dckj@100.66.1.5" \
  -L 13389:192.168.6.103:3389 Administrator@192.168.6.103 &

# 隧道二:本机 13390 → dckj-02 (192.168.6.102) RDP
sshpass -p 1235 ssh -N \
  -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \
  -o ServerAliveInterval=30 -o ServerAliveCountMax=6 \
  -o ProxyCommand="sshpass -p dckjzndx ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -W %h:%p dckj@100.66.1.5" \
  -L 13390:192.168.6.102:3389 fmq@192.168.6.102 &

然后 RDP 客户端连接:

  • dckj-03 → localhost:13389(用户 Administrator
  • dckj-02 → localhost:13390(用户 fmq

要点:

  • ProxyCommand 里层 sshpass跳板机密码,外层 sshpass目标机密码, 两级密码各管一段,这是双密码跳板场景的关键结构。
  • ServerAliveCountMax=6(默认 3):节点小宝 P2P 链路偶发抖动,放宽容忍避免隧道被误杀。
  • 验证隧道:timeout 3 bash -c '</dev/tcp/127.0.0.1/13389' && echo OK
  • 隧道断了(症状:RDP 卡死、后台 ssh 报 "Timeout, server not responding")直接重跑上面命令即可。

3. 经跳板执行远程命令(非交互,运维日常)

rwin() { # rwin <win-02|win-03> "命令"
  case "$1" in
    win-02) h=fmq@192.168.6.102;          p=1235 ;;
    win-03) h=Administrator@192.168.6.103; p='dev#2dckj@zndx' ;;
  esac
  sshpass -p "$p" ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \
    -o ProxyCommand="sshpass -p dckjzndx ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -W %h:%p dckj@100.66.1.5" \
    "$h" "$2"
}
# 用例:rwin win-03 "docker ps"

scripts/fetch_results.sh / scripts/deploy.sh 已原生支持跳板:profile 里加 REMOTE_PROXY_JUMP=dckj@100.66.1.5 即自动 -o ProxyJumpwin-01/win-02 两个 profile 已配好)。

4. 重要经验:Windows 节点重启后的恢复顺序

Docker Desktop 是 GUI 程序,必须有所属用户的交互桌面会话才能启动引擎。 从 SSH 远程 Start-Process 'Docker Desktop.exe' 无效——进程落在无桌面的 SSH 会话里, GUI 初始化不了,引擎 named pipe(dockerDesktopLinuxEngine)不会创建, docker ps 报 "unable to start" / "cannot find the file specified"。

正确的恢复链:

  1. 确认节点小宝活着(能 SSH 进去即活着;服务 NodeBabyLinkService Auto 自启,一般不用管)。
  2. 建隧道、RDP 登录对应账户的桌面(必须是与 Docker 数据同账户的桌面 dckj-03 的 Docker 挂在 Administrator 下,登录别的用户如 gaoyuqi 没用)。
  3. 登录后 Docker Desktop 自动启动(两台均已开 AutoStart),任务栏鲸鱼图标静止即就绪。
  4. dcts-node 容器配了 restart 策略,引擎就绪后自动恢复运行,无需手动 compose up。
  5. 验证:rwin win-03 "docker ps" 看到 dcts-node Up,再看看板心跳上线。

诊断命令速查(经 rwin 执行):

# 开机时间(判断是否重启过)
(Get-CimInstance Win32_OperatingSystem).LastBootUpTime
# 节点小宝服务状态
Get-CimInstance Win32_Service | Where-Object {$_.Name -match 'NodeBaby'} | Format-List Name,State,StartMode
# Docker 引擎是否就绪
docker ps
# 当前桌面会话归属(判断该登录哪个账户)
quser

5. 本次事故时间线(2026-08-20

  • 两台 Windows 于 14:52 左右重启;节点小宝 Auto 自启正常(开机 16 秒内拉起), 网络链路一直通。
  • Docker Desktop 虽配了 AutoStart,但因 Administrator/fmq 未登录桌面Docker Desktop 依赖登录会话),引擎未启动,节点掉线。
  • 远程 Start-Process 反复失败 → 查日志发现 backend 未被拉起 → quser 发现桌面会话 属于第三方用户且已断开 → 定位根因。
  • 经 SSH 隧道 RDP 登录桌面后,Docker 引擎启动、dcts-node 容器自动恢复。

治本方向(未做,待定):给两台 Windows 配置 Administrator/fmq 自动登录 (注册表 AutoAdminLogon,密码明文存储需评估安全),彻底摆脱重启后必须人工 RDP。