让 Agent 安全连服务器执行命令、开终端、传文件
29.8/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/18 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Sycada/dsh-remote-ssh-tools该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · dev
装得上吗
实装验证未通过(dependency_conflict),装前请到仓库确认最近更新与 issue
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 57 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(dependency_conflict · 2026/9/25) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意未发布到 npm registry,仅可从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-remote-ssh-tools(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/9/21 23:50:02
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 21 处,展示前 19 条)
- 读取本地文件lib/index.js:62
if (p.auth.keyPath) keyExists = existsSync(p.auth.keyPath); - 发起网络请求lib/client.js:18
const res = await fetch("/dsh-remote-ssh-tools/api" + path, { headers: { "content-type": "application/json" }, ...options }); - 写入剪贴板lib/client.js:182
try { await navigator.clipboard.writeText(r.page.url); setNote({ id: Date.now(), text: T.copied, ok: true }); } - 读取本地文件lib/engine.js:90
try { if (existsSync(file)) return { file, from: "configured" }; } catch { } - 读取本地文件lib/engine.js:102
].filter((p) => { try { return existsSync(p); } catch { return false; } }); - 读取本地文件lib/engine.js:134
try { privateKey = readFileSync(keyPath); } catch { - 读取本地文件lib/engine.js:147
base.privateKey = readFileSync(candidates[0]); - 读取本地文件lib/engine.js:600
if (!fsn.existsSync(localPath)) throw new Error(`local file not found: "${localPath}"`); - 读取本地文件lib/engine.js:601
const st = fsn.statSync(localPath); - 写入本地文件lib/engine.js:630
fsn.mkdirSync(pathDirname(String(localPath)), { recursive: true }); - 写入本地文件lib/engine.js:633
const out = fsn.createWriteStream(localPath, { flags: "w" }); - 读取本地文件lib/store.js:127
if (existsSync(file)) { - 读取本地文件lib/store.js:128
const parsed = JSON.parse(readFileSync(file, "utf8")); - 写入本地文件lib/store.js:147
mkdirSync(dir, { recursive: true }); - 写入本地文件lib/store.js:149
writeFileSync(tmp, JSON.stringify(store, null, 2) + "\n", "utf8"); - 写入本地文件lib/store.js:150
renameSync(tmp, file); - 写入本地文件lib/store.js:151
try { mkdirSync(dir, { mode: 0o700 }); } catch { } - 读取本地文件lib/routes.js:246
const html = readFileSync(join(ASSET_DIR, "terminal.html"), "utf8"); - 读取本地文件lib/routes.js:273
const body = readFileSync(join(ASSET_DIR, name));
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-tools给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 安全连接服务器
- 执行远程命令
- 开启终端与传文件
README
由 DeepSeek 最新模型翻译生成dsh-remote-ssh-tools
为 DeepSeek Harness(含 DSH Desktop)而生的 SSH 会话管理插件:集中保存连接档案,让 Agent 能一键连服务器执行命令、开交互终端、传文件——所有秘密只存 DSH 凭据中心,界面与对话中永不出现明文。
版本:0.1.2 · License:MIT · 更新日志见 CHANGELOG.md
功能一览
- 连接档案管理集中维护 SSH 档案(名称/分组/主机/端口/用户/认证方式/私钥路径/备注),随开随用。
- Agent 一键执行(ssh_run)对话里说“连生产服务器跑 df -h”,Agent 自动选档案执行并返回输出;支持退出码、stderr、超时、输出截断、主机密钥校验。
- 交互式终端在设置页点“打开终端”,或在对话里让 Agent 用 ssh_session_open 打开——浏览器内 xterm 终端直连远端 shell,支持窗口缩放,会话跨页面刷新保活,关闭即结束远端会话。
- 文件传输(SFTP) ssh_sftp_upload / ssh_sftp_download / ssh_sftp_list,上传可自动创建远端目录,下载默认防覆盖。
展开完整文档(README 剩余 1 节)
dsh-remote-ssh-tools
为 DeepSeek Harness(含 DSH Desktop)而生的 SSH 会话管理插件:集中保存连接档案,让 Agent 能一键连服务器执行命令、开交互终端、传文件——所有秘密只存 DSH 凭据中心,界面与对话中永不出现明文。
版本:0.1.2 · License:MIT · 更新日志见 CHANGELOG.md
功能一览
- 连接档案管理集中维护 SSH 档案(名称/分组/主机/端口/用户/认证方式/私钥路径/备注),随开随用。
- Agent 一键执行(ssh_run)对话里说“连生产服务器跑 df -h”,Agent 自动选档案执行并返回输出;支持退出码、stderr、超时、输出截断、主机密钥校验。
- 交互式终端在设置页点“打开终端”,或在对话里让 Agent 用 ssh_session_open 打开——浏览器内 xterm 终端直连远端 shell,支持窗口缩放,会话跨页面刷新保活,关闭即结束远端会话。
- 文件传输(SFTP) ssh_sftp_upload / ssh_sftp_download / ssh_sftp_list,上传可自动创建远端目录,下载默认防覆盖。
- 凭据安全密码与私钥口令只以引用名写入 DSH 凭据中心(~/.dsh/.credentials.yaml);档案、工具参数、系统提示词与输出中均不出现密钥值,密码也绝不进进程命令行。
- 主机密钥指纹缓存首次连接自动记录指纹(accept-new),支持 strict 模式;指纹不符直接拒绝并提示(防中间人)。
- 即插即用的系统提示词插件会向每个会话宣告可用工具与已存主机清单,Agent 无需任何配置即可在需要远程操作时自动选用。
安装
方式一:GitHub 依赖安装(推荐)
本插件通过 GitHub 仓库(Sycada/dsh-remote-ssh-tools)发布,包名 dsh-remote-ssh-tools,未发布到 npm。
注意:npm 上另有名为 dsh-remote-ssh 的包(0.1.0–0.2.4,Apache-2.0),属于另一个项目(Yan-Zero/dsh-remote-ssh),与本插件无关,请勿混淆。
在 DSH profile 的 package.json 中引用 GitHub 依赖并加入 bundle:
"dependencies": {
"dsh-remote-ssh-tools": "https://github.com/Sycada/dsh-remote-ssh-tools.git#v0.1.2"
},
"dsh": { "profile": { "bundles": [ /* ...原有项... , "dsh-remote-ssh-tools" ] } }
在 profile 目录执行 pnpm install 后重启 DSH。
方式二:本地文件依赖(开发/预发布验证)
将源码解压到本地目录,在 profile 的 package.json 中使用:
"dsh-remote-ssh-tools": "file:D:/path/to/dsh-remote-ssh-tools"
pnpm install 后重启;迭代改代码后需重跑 pnpm install 同步到安装副本。
1. 编辑 ~/.dsh/profiles//package.json:
- dependencies 增加:"dsh-remote-ssh-tools": ""
- dsh.profile.bundles 增加:"dsh-remote-ssh-tools"
2. 在 profile 目录执行 pnpm install
3. 重启 / 重载该 profile(新增 bundle 属组合变更,重启最稳)
客户端模块由 DSH 自动发现并按内容哈希提供,无需重建 Harness 的 Web 壳。
安装后:设置左侧导航出现 Remote SSH 页面;Settings → Plugins 出现可折叠的 Remote SSH 卡片。
快速开始
1. 打开 Settings → Remote SSH → 新建档案:填名称、主机、端口(默认22)、用户、认证方式。
2. 保存后,在下方 设置凭据 中为该档案保存密码/私钥口令(值进入 DSH 凭据中心,不回显)。
3. 点 测试 验证连通。
4. 三种用法随你选:
- Agent:对话里说“用 test 档案跑 uptime”,或让 Agent ssh_sftp_upload 传文件;
- 终端:点“打开终端”,或让 Agent 执行 ssh_session_open 后用 sidebar_open 把终端页开进侧边栏;
- SFTP:让 Agent 列出远端目录、上传/下载文件。
Agent 工具(共 13 个)
| 工具 | 作用 |
| ssh_profile_list / add / update / remove | 档案增删改查 |
| ssh_profile_test | 连通性 + 认证快速探测 |
| ssh_secret_status | 只报告凭据引用是否已设置(永不显示值) |
| ssh_run | 远程执行一条命令并返回 stdout/stderr/退出码/耗时 |
| ssh_session_open / list / close | 交互会话:打开、列出、关闭 |
| ssh_sftp_list / upload / download | SFTP:列目录、上传(可自动建目录)、下载(默认防覆盖) |
约定:
- 目标优先用已保存的 profile id;也可直接给 host(+user/port/auth 引用)。
- 绝不要求用户把密码/密钥贴进对话:只接受 passwordRef 等引用,值在凭据中心。
- 交互长任务(编辑器/tmux/服务日志)用 ssh_session_open;单条命令用 ssh_run。
凭据与安全设计
- 档案 JSON 不含任何秘密;密码/口令经 DSH 凭据中心保存(~/.dsh/.credentials.yaml,属主权限)。
- 密码引用(passwordRef)是引用名而非密码本身;合法命名:字母/数字/下划线,以字母或下划线开头(如 DSH_REMOTE_SSH_TOOLS_TEST_PASSWORD)。非法命名在保存/写入前即被拒绝。
- 删除档案时可选“同时清除其凭据”;同一引用被多个档案共用时自动跳过,避免误删。
- ssh2 通道内认证(密码/私钥),密钥不进 argv/日志/工具输出;交互终端为纯 JS PTY 仿真(xterm),跨平台。
- 主机密钥:默认 accept-new 并缓存;hostKeyPolicy: strict 时未知主机拒绝、指纹不符报错。
- 全部 HTTP/WS 路由受 DSH 浏览器信任围栏保护;会话以不可猜 token 校验;卸载插件即断开全部会话。
- 命令超时、输出上限、并发会话数均有默认约束并可配置。
配置(cordis.patch.yml 中插件 config)
| 键 | 默认 | 说明 |
| sshPath | "" | 自定义 ssh 二进制路径(仅展示用;执行引擎为内置 ssh2) |
| connectTimeoutMs | 15000 | 连接超时 |
| keepaliveMs | 30000 | keepalive 间隔 |
| runTimeoutMs | 120000 | ssh_run 单命令超时 |
| runOutputLimit | 1048576 | stdout/stderr 上限(超出截断并标记) |
| maxSessions | 8 | 并发交互会话上限 |
| terminalScrollback | 5000 | 终端回滚行数(页面参数) |
| hostKeyPolicy | accept-new | accept-new | strict |
| trustedHosts | [] | 额外信任来源(LAN 部署时) |
| defaultUser | "" | 档案未指定用户时的默认用户 |
数据位置
- ~/.dsh/dsh-remote-ssh-tools/store.json:连接档案 + 主机密钥指纹缓存(原子写入)。
- ~/.dsh/.credentials.yaml:凭据中心(各档案的密码/口令值,引用式)。
- 删除档案不会自动删除凭据,除非在删除确认中选择“删除并清除凭据”。
卸载
在插件管理中移除 bundle 并 pnpm install;如需彻底清理,再删除上面两个数据文件中的相关条目。
FAQ
- 提示 “no password available … set credential”:该档案密码尚未在凭据中心/环境变量中设置——到 Remote SSH 设置页的“设置凭据”区填写,或设置同名环境变量。
- 终端一直打不开/白屏:请确保重启过 profile(客户端与宿主端代码随重启加载);仍异常时把该窗口 DevTools 控制台报错发来。
- agent 转发(ssh -A):v0.1 交互引擎暂不支持,后续可作为可选模式。
- 能否连跳板机/做端口转发:规划中(v0.2+)。
兼容性
- 依赖 DSH(含 Desktop)≥ 0.1.1-rc.1;Node ≥ 20。
- 执行引擎为纯 JS ssh2 + xterm,Windows / macOS / Linux 均可运行交互终端。
License
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Sycada/dsh-remote-ssh-tools
让 Agent 安全连服务器执行命令、开终端、传文件
相关插件 · 开发 / 工程
隐私简历生成器reactive-resume/reactive-resume
Reactive Resume 已迁至 GitHub 上的…
★ 45,288已汉化MCP
71.7
长时任务执行闭环AMAP-ML/LongHorizon-Harness
面向 Computer-Use Agent 的 Loop Engineering
★ 1,764已汉化DSH
70.5
多代理编排运行时Enderfga/claw-orchestrator
面向编程智能体的运行时。把 Claude Code、Codex、Antigravity、Grok…
★ 586已汉化MCP
69.4
记忆进化插件csyangwen/dsh-memory-evolve
dsh-memory-evolve 使用场景指南
★ 461已汉化DSH
67.9
原生编程智能体paean-ai/deeptide
由 DeepSeek 打造,为 DeepSeek 而生。
★ 1,107已汉化DSH
67.7
多引擎接力台emo-xiaoyu/harness-mix
macOS/Linux 已加入源码构建与启动适配;目标系统的完整桌面验收仍需在对应机器执行。安装方式、Linux…
★ 419已汉化DSH
66.8
这是你的仓库?认领条目