# Security Policy · 安全说明 这份文件讲清楚 dsh-control **在你机器上做什么、不做什么**,以及凭据如何被对待。 ## 插件在本机做什么 | 动作 | 位置 | 说明 | |---|---|---| | 存一份状态 | `$DSH_HOME/dsh-control/state.json` | 权限 0600。内容:环境清单(地址/端口/**远端访问令牌**)与本地↔远端会话映射 | | 按需启动 SSH 隧道进程 | 本机 | `ssh -N -L 127.0.0.1:<本地端口>:127.0.0.1:<远端端口> `,断线自动重连;插件停用/环境移除即终止 | | 建工作区目录 | `$DSH_HOME/workspaces/<环境名>` | 普通目录,随环境移除而注销登记(**文件永不清除**) | ## 插件不做什么 - **不在远端装东西、不写远端文件、不部署、不管远端进程生命周期**(连远端 dsh 的启动/停止都不碰) - 不读你机器上的 SSH 私钥内容、不读 dsh 之外的其他凭据 - **令牌不进日志、不进会话记录、不外发**;只在访问远端 API 时使用 - 不保存密码:SSH 免密未配置时,只给出 `ssh-copy-id` 修复命令让你自己执行 ## 远端访问令牌的性质 - 它由远端 dsh 启动时生成,**等同于那台机器上 dsh 的完全控制权** - 插件经 SSH 隧道读取它,存入 0600 的状态文件;远端重启换令牌后,点「重连」自动重取 - **风险边界**:能读到本文件的本机进程,即能控制对应远端——请像对待 SSH 私钥一样对待本机 ## 对远端服务器的操作清单(全部只读) 1. 一条探测脚本:`ps`(找 dsh web 进程)、`systemctl list-units`(找单元名,若有)、 依次尝试 journald → 全局 journal → 进程 stdout → 常见日志文件(**只为取访问令牌**) 2. 之后一切操作走**远端 dsh 自己的 HTTP API**(建会话/发消息/改名) ## 报告漏洞 请开 GitHub Security Advisory 或私密 issue,勿在公开 issue 贴令牌或状态文件内容。