跳到正文
MyDSH我的 DSH 实战笔记
English
独立维护,非DeepSeek官方;与mydsh.dev等其他MyDSH站点无关联。

首页/模型、权限与安全/API Key与凭证

用环境变量放 Key,而不是写进配置文件

准备把配置同步到另一台机器,或者要把配置目录放进备份/仓库,担心 key 跟着走。

已核验版本与环境核验日期2026-11-14
宿主版本
0.1.2-alpha.5
实测文件
~/.dsh/.credentials.yaml
核验日期
2026-11-14

可复制指令

dsh --dump-config | grep -i -A3 model

先看实际情况。本机凭据文件的结构是这样(值已打码):

version: 1
refs:
  DEEPSEEK_API_KEY: <你的 key>
records:
  client-connection/browser-session:
    kind: grant
    payload:
      version: 1
      secret: <会话密钥>

refs下的key是明文,不是引用外部密钥库。所以这个文件必须当成钥匙本身对待:不进仓库、不进公开备份、不发给别人排查。

为什么还要用环境变量

两个理由,都很实际:

  • 备份粒度:上一页已经算过,真正要保的配置只有几十MB。如果key在环境变量里,配置包可以放心传;如果在文件里,每次打包都要挑着排。
  • 多机器:环境变量天然是每台机器各自的,配置文件同步过去不会把key带过去。

怎么放

export DEEPSEEK_API_KEY='sk-...'        # 当前 shell
echo 'export DEEPSEEK_API_KEY=...' >> ~/.bashrc   # 长期,注意文件权限

Windows PowerShell里是 $env:DEEPSEEK_API_KEY = "sk-...";要持久化用 [Environment]::SetEnvironmentVariable。Grafana、systemd这类场景各有自己的注入方式,思路一样:值不进配置文件。

环境变量不是绝对安全:同用户的进程能读到,ps e 在某些系统上能翻出来。它解决的是「配置被同步走」这个问题,不是「本机被入侵」。别把它当成加密。

验证它真的生效

dsh --dump-config | grep -i -A3 model

如果dump里显示的是环境变量引用而不是字面key,说明生效路径对了。再跑一条读文件任务确认端到端可用。

怎么算跑通

照着逐条对,全过才算完成。有一条没过,先解决它再往下。

  • dump-config里不再出现字面key
  • 读文件任务仍能跑通(说明取到了key)
  • 配置文件单独打包时,包里不含key

会失败在哪

现象 / 原因 / 怎么办,按实际踩到的顺序写。

现象原因怎么办
设了环境变量但dsh用不到不同shell或不同会话,变量没继承在同一个shell里启动;Windows上注意是用户级还是进程级
凭据文件里已经有明文key之前写进去过,环境变量不会自动清掉它换成引用或删掉该行,并把该key视作已暴露、轮换一次

来源

标「已核验」的,来自本站实跑;标「公开资料整理」的,逐条附出处。