前言¶
在 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"
}
安装与启用¶
安装步骤如下:
- 创建插件目录,解压包文件:
mkdir -p ~/.dsh/plugins
tar xzf dsh-remote-agent.tgz -C ~/.dsh/plugins
- 为两个 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
- 在
~/.dsh/profiles/web/cordis.patch.yml中添加插件条目:
# 在 cordis.patch.yml 中插入:
# - insert:
# - id: remote-agent
# name: dsh-remote-agent
- 重启 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