dsh-remote-agent:让 Hub 直接从 Agent 进程读取启动令牌,无需抓取日志

前言

在 DSH 的远程部署场景下,Hub 需要拿到当前 Agent 进程的启动令牌,才能生成浏览器 Cookie 建立会话。传统做法要么依赖手动复制粘贴令牌,要么从系统日志中抓取,前者容易出错,后者需要额外的日志采集与解析逻辑,维护成本较高。

dsh-remote-agent 是一个 Agent 端的 DSH 插件,它的作用是把当前进程的启动令牌与身份信息写入一个受控的文件,供 Hub 直接读取。这样,Hub 就能干净地生成浏览器 Cookie,而不需要去抓取 journalctl 之类的系统日志。

这是什么

dsh-remote-agent 是一个 Agent 端的 DSH 主机插件,由维护者 yhuan416 维护。它安装在每一个 Hub 需要访问的后端上,负责将当前 DSH 进程的启动令牌和身份信息写入 $DSH_HOME/remote-agent.json,并在进程退出时清理该文件。Hub 端通过 SSH 连接,读取这个文件,拿到令牌后生成浏览器 Cookie。

核心功能

  • Agent 端写入:将当前进程的启动令牌、主机名、进程 ID、启动时间、更新时间、Web 端口、DSH 安装目录等信息写入 $DSH_HOME/remote-agent.json,文件权限 0600,写入操作为原子写。
  • 进程退出清理:进程退出时自动删除 $DSH_HOME/remote-agent.json。
  • Hub 端读取:Hub 端通过 tokenFile: { kind: ssh, host, user, path: ~/.dsh/remote-agent.json } 指定要读取的文件,从中获取令牌并生成浏览器 Cookie。

输出文件示例:

{
  "version": 1,
  "hostname": "yhuan-n100",
  "pid": 1234,
  "startedAt": 1792400000000,
  "updatedAt": 1792400000000,
  "token": "<43-char launch token>",
  "webPort": 3080,
  "dshHome": "/home/yhuan/.dsh"
}

安装与启用

安装步骤如下:

  1. 创建插件目录,解压包文件:
mkdir -p ~/.dsh/plugins
tar xzf dsh-remote-agent.tgz -C ~/.dsh/plugins
  1. 为两个 profile 创建软链接:
ln -sfn ~/.dsh/plugins/dsh-remote-agent ~/.dsh/profiles/node_modules/dsh-remote-agent
ln -sfn ~/.dsh/plugins/dsh-remote-agent ~/.dsh/profiles/web/node_modules/dsh-remote-agent
  1. 在 ~/.dsh/profiles/web/cordis.patch.yml 中添加插件条目:
# 在 cordis.patch.yml 中插入:
# - insert:
#     - id: remote-agent
#       name: dsh-remote-agent
  1. 重启 DSH Web 服务,然后检查输出文件:
cat ~/.dsh/remote-agent.json

可选配置:可以通过 { file: "/custom/path/remote-agent.json" } 指定写入路径。

典型用法

Hub 端配置示例:

tokenFile:
  kind: ssh
  host: <agent-host>
  user: <ssh-user>
  path: ~/.dsh/remote-agent.json

安装完成后,每次 DSH Web 进程启动时,都会在 $DSH_HOME/remote-agent.json 中写入当前进程的启动令牌与身份信息,Hub 通过 SSH 读取该文件,即可拿到令牌并生成浏览器 Cookie。

适用场景与注意

  • 适用场景:需要远程访问多个 Agent 后端、希望通过配置文件统一管理令牌来源、希望避免从系统日志中抓取令牌的场景。
  • 注意事项:插件以当前 DSH 进程的权限运行,安装前应检查源码与许可证;令牌是按进程生成的,每次启动都会产生新的令牌;确保 SSH 用户对目标文件的读取权限。

总结

dsh-remote-agent 用一个受控的文件代替了手动复制令牌或抓取日志的方式,让 Hub 能够直接从 Agent 进程获取启动令牌并生成浏览器 Cookie。安装简单,配置明确,适合需要在远程场景中自动获取令牌的 DSH 部署。

  • 插件目录页:https://www.skillhub.cn/plugins/yhuan416/dsh-remote-agent
  • GitHub 仓库:https://github.com/yhuan416/dsh-remote-agent
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜