Ubuntu 22.04 安装 sops 3.13.3 指南

Ubuntu 22.04 从零安装 sops 3.13.3 指南:官方 .deb、GitHub Release 二进制 sha256 校验、age 后端 apt 与官方二进制双路线安装、age-keygen 密钥生成与首条加解密闭环验证,含升级、卸载与 FAQ,全部命令实测。

sopssops2026/10/18

Ubuntu 22.04 安装 sops 3.13.3 指南

目标:在 Ubuntu 22.04 服务器上从零安装 sops 3.13.3(当前最新稳定版)及其推荐的 age 加密后端,覆盖官方 .deb 包、GitHub Release 校验下载二进制、apt 与 age 官方二进制共四条安装路线,完成 age-keygen 密钥对生成与首条加解密验证,全部命令与回显已在 Ubuntu 22.04 实测通过。

一、环境信息

本章列出本次安装实测的环境基准,读者的服务器只要满足同样的系统与架构,即可按相同命令复现。

  • 操作系统:Ubuntu 22.04.5 LTS(PRETTY_NAME 实测值,下文简称 Ubuntu 22.04)
  • 内核与架构:Linux 6.8.0-138-generic x86_64,包架构 amd64
  • sops 版本:3.13.3(2026-07-23 发布,安装前经 GitHub Releases API 核实)
  • 加密后端 age:apt 仓库版 1.0.0 / 官方二进制版 1.3.2(两种都实测)
  • 磁盘与内存:磁盘可用 552G、内存 31Gi(sops 为单二进制工具,资源要求极低,50MB 以内磁盘即可)
  • 安装路径约定:.deb 方案装到 /usr/bin/sops;二进制方案装到 /usr/local/bin/sops;age 密钥目录 /root/.config/sops/age/

系统信息实测回显:

uname -srm
Linux 6.8.0-138-generic x86_64
grep -E "^(PRETTY_NAME|VERSION_ID)" /etc/os-release
PRETTY_NAME="Ubuntu 22.04.5 LTS"
VERSION_ID="22.04"
dpkg --print-architecture
amd64

架构值决定后面下载件的选择:amd64 对应 .deb 的 sops_3.13.3_amd64.deb、二进制的 sops-v3.13.3.linux.amd64;如果你的服务器是 ARM(输出 arm64/aarch64),换用对应 arm64 发布件即可,官方同时提供。

二、前置条件

安装本身不依赖任何运行时(Go 静态编译),但下载与校验需要基础网络工具。本章先把环境备齐。

更新软件源索引并安装下载/校验工具:

apt-get update

输出节选(实测首尾):

Get:1 http://security.ubuntu.com/ubuntu jammy-security InRelease [129 kB]
Get:3 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [128 kB]
...
Reading package lists... Done
apt-get install -y curl wget

输出节选(实测首尾):

Reading package lists... Done
Building dependency tree... Done
...
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.

验证工具就位:

curl --version | head -1 && wget --version | head -1
curl 7.81.0 (x86_64-pc-linux-gnu) libcurl/7.81.0 OpenSSL/3.0.2 zlib/1.1.1 brotli/1.0.9 zstd/1.4.8 libidn2/2.3.2 libpsl/0.21.0 (+libidn2/2.3.2) libssh/0.9.6/openssl/zlib nghttp2/1.43.0 librtmp/2.3 OpenLDAP/2.5.19 (Upgraded)
GNU Wget 1.21.2 built on linux-gnu.

⚠️ 注意:若服务器访问 GitHub 缓慢或超时,所有下载命令可统一走 HTTP 代理,本文在第六章给出实测示例(curl -x http://<代理地址>:<端口> 形式,请替换为你自己的代理)。

三、版本选型说明

安装前先确定「装哪个版本、下载哪个文件」。sops 采用语义化版本,3.13.3 是撰写本文时的最新稳定版,无更新的次版本;版本核实方法(不臆造版本号的官方途径):

curl -s https://api.github.com/repos/getsops/sops/releases/latest | grep -E '"tag_name"|"published_at"'

实测输出(2026-10-18 查询):

  "tag_name": "v3.13.3",
  "published_at": "2026-07-23T05:27:57Z",

v3.13.3 全部发布件矩阵(GitHub Release 页实查):

发布件适用平台大小说明
sops_3.13.3_amd64.debDebian/Ubuntu x86_6416,485,534 B.deb 包,dpkg 直装(本章方案 A)
sops_3.13.3_arm64.debDebian/Ubuntu ARM6414,887,884 BARM 服务器用
sops-3.13.3-1.x86_64.rpmRHEL/CentOS x86_6417,080,545 Brpm 系发行版
sops-3.13.3-1.aarch64.rpmRHEL/CentOS ARM6415,381,222 Brpm 系 ARM
sops-v3.13.3.linux.amd64Linux x86_6452,121,762 B官方裸二进制(本章方案 B)
sops-v3.13.3.linux.arm64Linux ARM6448,300,194 B官方裸二进制 ARM
sops-v3.13.3.darwin.amd64 / .darwin.arm64macOS Intel/Apple Silicon53,674,896 / 50,168,146 BmacOS 用
sops-v3.13.3.amd64.exe / .arm64.exeWindows53,497,856 / 48,963,072 BWindows 用
sops-v3.13.3.checksums.txt全平台630 B二进制发布件 sha256 清单
sops-v3.13.3.checksums.sigstore.json全平台10,331 Bchecksums 的 Cosign 签名(sigstore)
sops-v3.13.3.intoto.jsonl全平台27,187 BSLSA provenance 证明

关键差异与选型提示(基于上表 + 实测发现):

  1. Ubuntu 服务器首选 .deb(方案 A):纳入 dpkg 包管理,dpkg -r 一条命令可卸载、可查询文件清单。
  2. 需要固定路径/最小化或非 root 精确控制时选裸二进制(方案 B):只落一个文件到 /usr/local/bin,且只有二进制发布件在 checksums.txt 中提供 sha256 校验(实测 checksums.txt 共 630 字节、仅列 7 个二进制发布件,不包含 .deb/.rpm),供应链校验需求强的读者应走方案 B 并配合 sigstore 签名验证。
  3. Ubuntu 官方 apt 仓库中也有 sops 包,但版本陈旧(jammy universe 中远低于 3.13.x),生产环境不建议依赖发行版仓库里的旧版本,故本文不作为推荐路线。

四、方案 A:官方 .deb 包安装

本方案直接使用官方发布的 .deb 包安装,是 Ubuntu 上最省事、最易于包管理的方式:下载 → dpkg -i 安装 → 验证。全程 3 条命令。

4.1 下载 .deb 包

到 /tmp 目录下载(临时文件,装完即删):

cd /tmp
wget https://github.com/getsops/sops/releases/download/v3.13.3/sops_3.13.3_amd64.deb

输出节选(实测首尾):

--2026-10-18 07:48:52--  https://github.com/getsops/sops/releases/download/v3.13.3/sops_3.13.3_amd64.deb
Resolving github.com (github.com)... 140.82.121.3, 140.82.121.4
...
sops_3.13.3_amd64.deb    100% [==========================>]  16.49M  --.-KB/s    in 0.1s

2026-10-18 07:48:52 (86.7 MB/s) - 'sops_3.13.3_amd64.deb' saved [16485534/16485534]

核对文件大小与 Release 页一致(16,485,534 字节):

ls -l sops_3.13.3_amd64.deb
-rw-r--r-- 1 root root 16485534 Jul 23 05:28 sops_3.13.3_amd64.deb

⚠️ 注意:官方 checksums.txt 不含 .deb/.rpm 的 sha256(实测见第三章),.deb 的完整性核验以「文件字节数与 Release 页一致」为准;对完整性要求更高的场景请改用方案 B 的二进制 + checksums 校验。

4.2 安装

dpkg -i sops_3.13.3_amd64.deb

实测回显(逐行照抄):

Selecting previously unselected package sops.
(Reading database ... 11310 files and directories currently installed.)
Preparing to unpack sops_3.13.3_amd64.deb ...
Unpacking sops (3.13.3) ...
Setting up sops (3.13.3) ...

查看该包落盘了哪些文件、包元数据是否正确:

dpkg -L sops
/usr
/usr/bin
/usr/bin/sops
dpkg -s sops | head -12
Package: sops
Status: install ok installed
Priority: optional
Installed-Size: 50900
Maintainer: SOPS maintainers <cncf-SOPS-maintainers@lists.cncf.io>
Architecture: amd64
Version: 3.13.3
Description: Simple and flexible tool for managing secrets
Homepage: https://github.com/getsops/sops

4.3 验证安装

which sops && sops --version

实测回显(逐行照抄):

/usr/bin/sops
sops 3.13.3 (latest)

[warning] Note that in a future version, sops will no longer check whether the current version is the latest when asking for sops' version. If you want to explicitly check for the latest version, add the `--check-for-updates` option to `sops --version`. This will hide this deprecation warning and will always check, even if the default behavior changes in the future.

版本输出 sops 3.13.3 (latest) 即安装成功。末尾的 [warning] 是 3.13.x 的弃用预告(实测原文):未来版本 --version 将不再顺带联网检查更新;想保留检查行为并消除警告,显式加 --check-for-updates:

sops --version --check-for-updates
sops 3.13.3 (latest)

至此方案 A 完成。若后续只想保留一种安装形态,继续学习时建议按第六章装好 age 加密后端再跑首条加密命令。

五、方案 B:GitHub Release 二进制安装(含 sha256 校验)

本方案从 GitHub Release 下载官方裸二进制,先用官方 checksums.txt 做 sha256 校验再落盘,是供应链完整性最好、路径最可控的方式;与方案 A 二选一即可(也可共存,/usr/local/bin 在 PATH 中通常优先于 /usr/bin)。

5.1 下载二进制与校验文件

cd /tmp
wget -q https://github.com/getsops/sops/releases/download/v3.13.3/sops-v3.13.3.linux.amd64
wget -q https://github.com/getsops/sops/releases/download/v3.13.3/sops-v3.13.3.checksums.txt
ls -l sops-v3.13.3.linux.amd64 sops-v3.13.3.checksums.txt

实测回显:

-rw-r--r-- 1 root root 630 Jul 23 05:28 sops-v3.13.3.checksums.txt
-rw-r--r-- 1 root root 52121762 Jul 23 05:28 sops-v3.13.3.linux.amd64

checksums.txt 实测全文(可见仅列二进制发布件,无 .deb/.rpm 条目):

cat sops-v3.13.3.checksums.txt
42162d5cef10b74fcf80a045a70e658d7ce6e63d6ea1be6f347e44015714468d  sops-v3.13.3.darwin.amd64
53b0abacd38ef1b12a66d6c100956691b9cefce018d91f81e73ddf7438b94d77  sops-v3.13.3.linux.arm64
7f936a0d08edbeba3eb8f50bad1fe71eba83a140a80dfd17051f3bdb4facb08a  sops-v3.13.3.arm64.exe
a4a9a398858fe8b2ef72d9686d930bf7c5cece9be74ad83ac3b53cfdd70e6b1c  sops-v3.13.3.amd64.exe
ada49efb072e8d02434b15cdd4746561b7b37e82813ce11efe5cb311439f288b  sops-v3.13.3.darwin
b97c0d434aab577dc40310e8d22ff9e45eef4c80638ab978daae9b4681c59286  sops-v3.13.3.darwin.arm64
e5bec3346a873ae91d871550f3e698c1aad962aff462a080e40f25fde17fef6b  sops-v3.13.3.linux.amd64

5.2 sha256 校验

用校验清单直接核对刚下载的二进制(-c 表示 check):

echo "e5bec3346a873ae91d871550f3e698c1aad962aff462a080e40f25fde17fef6b  sops-v3.13.3.linux.amd64" | sha256sum -c -

实测回显:

sops-v3.13.3.linux.amd64: OK

输出 OK 才继续安装;若输出 FAILED,说明下载不完整或被篡改,删除后重新下载。更严谨的做法是再验证 checksums.txt 本身的 Cosign 签名(sops-v3.13.3.checksums.sigstore.json,需安装 cosign 工具,命令形如 cosign verify-blob sops-v3.13.3.checksums.txt --bundle sops-v3.13.3.checksums.sigstore.json --certificate-identity-regexp=https://github.com/getsops ...,官方 Release Notes 有完整说明),本文不展开。

5.3 安装到 /usr/local/bin

install -m 0755 sops-v3.13.3.linux.amd64 /usr/local/bin/sops
which sops

实测回显:

/usr/local/bin/sops

5.4 验证

sops --version --check-for-updates
sops 3.13.3 (latest)

💡 说明:若之前装过方案 A 的 .deb 版,再按方案 B 安装会出现 /usr/bin/sops(deb)与 /usr/local/bin/sops(二进制)并存的情形。用 which sops 查看实际生效的是哪一个(/usr/local/bin 通常在 PATH 前列);确认二进制版生效后可按第十一章卸载 deb 版避免混乱。

5.5 网络受限时的代理下载(实测可用)

当 GitHub 直连超时,curl/wget 都支持代理参数。以下为走代理下载 age 包的实测示例(sops 的下载同理,替换 URL 即可):

curl -x http://192.168.1.62:7897 -sL -o age-v1.3.2-linux-amd64.tar.gz \
  https://github.com/FiloSottile/age/releases/download/v1.3.2/age-v1.3.2-linux-amd64.tar.gz
ls -l age-v1.3.2-linux-amd64.tar.gz

实测回显(代理地址请换成你环境可用的):

-rw-r--r-- 1 root root 19405817 Oct 18 07:59 age-v1.3.2-linux-amd64.tar.gz

也可以用会话级环境变量一次性对后续所有命令生效:

export http_proxy=http://192.168.1.62:7897 https_proxy=http://192.168.1.62:7897

六、加密后端 age 的安装与密钥生成

sops 只是「编辑器」,真正执行加密的是它调用的密钥后端。推荐 age:零依赖、密钥即文本文件、特别适合离线与 Git 场景。本章给出 apt 与官方二进制两条 age 安装路线,并完成 age-keygen 密钥对生成实测。

💡 技术拓展:sops 的加密后端不止 age 一种,还有 PGP/GPG、AWS KMS、GCP KMS、Azure Key Vault、HuaweiCloud KMS、HashiCorp Vault Transit(对比表与选型见 《sops 3.13.3 介绍与选型指南》第三章)。本文选 age 的理由:不需要任何云账号或外部服务,一把本地密钥文件即可跑通全部功能。

6.1 路线一:apt 安装 age(Ubuntu 仓库版)

先查仓库中的版本:

apt-cache policy age

实测回显:

age:
  Installed: (none)
  Candidate: 1.0.0-1ubuntu0.1
  Version table:
     1.0.0-1ubuntu0.1 500
        500 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 Packages
        500 http://security.ubuntu.com/ubuntu jammy-security/universe amd64 Packages
     1.0.0-1 500
        500 http://archive.ubuntu.com/ubuntu jammy/universe amd64 Packages

Ubuntu 22.04 仓库提供的是 1.0.0。安装:

apt-get install -y age

输出节选(实测首尾):

Reading package lists... Done
Building dependency tree... Done
...
Preparing to unpack .../age_1.0.0-1ubuntu0.1_amd64.deb ...
Unpacking age (1.0.0-1ubuntu0.1) ...
Setting up age (1.0.0-1ubuntu0.1) ...
which age age-keygen && age --version && age-keygen --version
/usr/bin/age
/usr/bin/age-keygen
1.0.0
1.0.0

1.0.0 可以正常完成 sops 的全部 age 后端功能,但 age 官方已迭代到 1.3.x(新增后量子等插件能力),推荐用路线二升级到官方版本。

6.2 路线二:官方二进制安装 age 1.3.2(推荐)

先卸载 apt 版避免新旧混用:

apt-get remove -y age

输出节选(实测首尾):

Reading package lists... Done
...
Removing age (1.0.0-1ubuntu0.1) ...
Processing triggers for man-db (2.10.1-1) ...

下载并查看官方压缩包结构(1.3.2 的包内含 age、age-keygen 及若干插件二进制):

cd /tmp
wget -q https://github.com/FiloSottile/age/releases/download/v1.3.2/age-v1.3.2-linux-amd64.tar.gz
tar tzf age-v1.3.2-linux-amd64.tar.gz

实测回显:

age/
age/age-keygen
age/age-plugin-tag
age/age-plugin-batchpass
age/age-plugin-pq
age/age-plugin-tagpq
age/age
age/LICENSE
age/age-inspect

解压并把核心两个二进制装进 PATH:

tar xzf age-v1.3.2-linux-amd64.tar.gz
install -m 0755 age/age age/age-keygen /usr/local/bin/
which age && age --version && age-keygen --version

实测回显:

/usr/local/bin/age
v1.3.2
v1.3.2

6.3 age-keygen 生成密钥对(实测)

sops 默认在 ~/.config/sops/age/keys.txt 查找 age 私钥(无需任何环境变量即可自动加载),按此路径生成:

mkdir -p /root/.config/sops/age
age-keygen -o /root/.config/sops/age/keys.txt

实测回显(逐行照抄,公钥即你的 recipient):

Public key: age1kyu22mnpkeyf64r64zc5v2pwxsyv3ew0pz434w2mne2qstsa4urqgdk3dt

查看密钥文件内容与权限:

ls -l /root/.config/sops/age/keys.txt
-rw------- 1 root root 184 Oct 18 07:51 /root/.config/sops/age/keys.txt
cat /root/.config/sops/age/keys.txt

实测回显(本文演示环境生成的测试密钥,可照抄用于练习):

# created: 2026-10-18T07:51:00Z
# public key: age1kyu22mnpkeyf64r64zc5v2pwxsyv3ew0pz434w2mne2qstsa4urqgdk3dt
AGE-SECRET-KEY-16A7962JFCUN349SVT7K3YEQMHT9F92YDE0CVUPFV54Y6ELDPEMRQAH0MSE

要点逐项说明:

  • Public key: 行即 age 接收者(recipient),加密命令里的 --age 参数就是它;它出现在加密文件的元数据里是正常的(公钥本就公开)。
  • AGE-SECRET-KEY- 开头的行是私钥,等同于一切:谁拿到它谁能解密该公钥加密的所有文件。
  • 权限 600(仅属主可读写)由 age-keygen 自动设置,不要手动放宽。
  • 本文这份是演示密钥(仅用于本系列文档的练习闭环),生产环境请单独保管自己的密钥:私钥文件建议离线备份一份(如打印或加密 U 盘),服务器上只留一份且不进 Git。

6.4 首条加解密闭环验证

写一个含敏感字段的演示配置,跑通「加密 → 查看密文 → 解密比对」:

mkdir -p /opt/demo && cd /opt/demo
cat > secrets.yaml <<'EOF'
app:
  name: order-service
  port: 8080
database:
  host: 192.168.1.100
  port: 3306
  username: admin
  password: q1w2e3r4
  dbname: orders
api:
  payment_key: sk-test-1234567890abcdef
  webhook_secret: whsec-abcdefgh12345678
EOF

加密(--age 后跟 6.3 生成的公钥,-i 原地覆盖):

sops --encrypt --age age1kyu22mnpkeyf64r64zc5v2pwxsyv3ew0pz434w2mne2qstsa4urqgdk3dt --in-place secrets.yaml
head -8 secrets.yaml

实测回显(密文形态,末尾附带 sops 元数据块):

app:
    name: ENC[AES256_GCM,data:hKsBQkjV5jAu0OTfUQ==,iv:bPgdDqfV8zDSbe8w2FKLYZmgndgJUzRkPKEe6kiaf8o=,tag:MOb5m7+UsUT4OXxk98u8qw==,type:str]
    port: ENC[AES256_GCM,data:G7yUiA==,iv:LVag0GbA9joWXKjI7QsEEoLjdfi8jcxqEH4DXDftKko=,tag:4LRxL8QgcDy8IHfleiYi9g==,type:int]
database:
    host: ENC[AES256_GCM,data:cnkE8W5+CXjkammNHA==,iv:AL68IJFO/fUBDOTL6xmTBSFe60kLdBrcBPsWujARzmU=,tag:CUhcna3iuzMXZyInWEXwrg==,type:str]
    port: ENC[AES256_GCM,data:UAgA0g==,iv:axZMDazsaHNSrT4Qfy4vp6yotr9Jxklr13j88vpr3QA=,tag:NU161WgfZ2/TPsVsrXwDjg==,type:int]
    username: ENC[AES256_GCM,data:AGGw5lw=,iv:v8Zic6HBlOlN96SvfcYx8QpqlPRoP4dS6BbTnGR7U6o=,tag:P8yTkmEfarb41taSM9d67Q==,type:str]
    password: ENC[AES256_GCM,data:1s+ldYkT7GM=,iv:0HUrPyptJqRiThG37s8isiqKPC44PljPy15eobKj0nc=,tag:JfKZcyq0v1QWGUksYUOQEw==,type:str]

解密还原比对:

sops --decrypt secrets.yaml

实测回显(明文完整还原):

app:
    name: order-service
    port: 8080
database:
    host: 192.168.1.100
    port: 3306
    username: admin
    password: q1w2e3r4
    dbname: orders
api:
    payment_key: sk-test-1234567890abcdef
    webhook_secret: whsec-abcdefgh12345678

闭环成立:密文形态正确、解密还原无损,安装全部完成。

七、安装方案对比与选择建议

维度方案 A:官方 .deb方案 B:官方二进制 + sha256age:apt 1.0.0age:官方二进制 1.3.2
需联网是(GitHub)是(GitHub)否(Ubuntu 源/内网源)是(GitHub)
安装方式dpkg -iinstall 到 /usr/local/binapt-get installtar 解压 + install
落盘路径/usr/bin/sops/usr/local/bin/sops/usr/bin/age/usr/local/bin/age
完整性校验文件字节数比对checksums.txt sha256 + sigstore 签名可用apt 源签名官方发布件校验
版本新旧最新稳定版最新稳定版陈旧(1.0.0)最新(1.3.2)
包管理集成dpkg 可查询/卸载手动 rmapt 可升级/卸载手动 rm
适用场景日常服务器首选供应链要求高/最小化系统快速验证生产推荐

选择建议:Ubuntu 服务器日常安装选方案 A + age 官方二进制(兼顾易管理与后端新版);对二进制来源有强校验诉求、或希望所有工具集中放 /usr/local/bin 的运维规范,选方案 B;apt 版 age 仅适合临时验证。

八、基础配置说明

sops 装完即用,几乎没有"配置文件",但有四个环境级约定值得固定下来(写入 /root/.bashrc 或 /etc/profile.d/sops.sh):

  1. 密钥文件路径:默认 ~/.config/sops/age/keys.txt(自动加载)。密钥放在别处时用环境变量指定(实测生效):

    export SOPS_AGE_KEY_FILE=/root/.config/sops/age/keys.txt
    
  2. 默认接收者:批量加密新文件时不想每次敲 --age,可导出(实测与命令行参数等价):

    export SOPS_AGE_RECIPIENTS=age1kyu22mnpkeyf64r64zc5v2pwxsyv3ew0pz434w2mne2qstsa4urqgdk3dt
    

    更工程化的做法是仓库根目录放 .sops.yaml 规则文件(按路径自动匹配密钥,实测见 《sops 3.13.3 常用 CLI 命令与工具详解》)。

  3. 编辑器:sops edit 默认调 vim,可用 SOPS_EDITOR(优先)或 EDITOR 覆盖,例如 export SOPS_EDITOR=vim。

  4. 版本检查行为:export SOPS_DISABLE_VERSION_CHECK=1 可关闭版本联网检查(对应 --disable-version-check 参数)。

Shell 补全(可选,实测 3.13.3 内置 bash/zsh 两个子命令):

source <(sops completion bash)

验证补全脚本可生成:

sops completion bash | head -5
#! /bin/bash

_cli_bash_autocomplete() {
  if [[ "${COMP_WORDS[0]}" != "source" ]]; then
    local cur opts base

九、升级与多版本管理

  • .deb 方式升级:下载新版 .deb 后重复 dpkg -i sops_<新版本>_amd64.deb,dpkg 自动覆盖旧版(实测 3.13.3 与前版同路径 /usr/bin/sops);查询当前版本 dpkg -s sops | grep Version。
  • 二进制方式升级:下载新版二进制、校验后重新 install -m 0755 sops-v<新版本>.linux.amd64 /usr/local/bin/sops,单文件替换即完成升级。
  • 降级:与升级同一命令,把 URL/文件名换成旧版本号即可;所有历史版本都在 https://github.com/getsops/sops/releases 保留。
  • 多版本共存:sops 本身不支持多版本并行(一个 PATH 一个 sops)。确需并存时把不同版本放不同目录(如 /opt/sops-3.13.3/bin/sops),用绝对路径或按需切换 PATH 调用。
  • 升级后验证:sops --version 确认版本号;用既有加密文件跑 sops --decrypt <file> 确认新旧版本数据兼容(sops 文件格式向后兼容,元数据里记录了加密时的 version: 3.13.3)。

十、常见问题(FAQ)

Q1:sops --version 输出后面跟了一段 [warning],是装错了吗? 不是。这是 3.13.x 的弃用预告(实测原文见 4.3 节):未来 --version 不再顺带检查更新。加 --check-for-updates 显式保留检查即可消除警告;或在无法联网的机器上加 --disable-version-check(或环境变量 SOPS_DISABLE_VERSION_CHECK=1)避免联网等待。

Q2:官方 checksums.txt 里怎么找不到 .deb 的 sha256? 实测确认 checksums.txt 只包含 7 个裸二进制发布件(macOS/Linux/Windows),不含 .deb/.rpm。因此 .deb 路线以 Release 页标注的字节数做核对;需要密码学级校验就走方案 B(二进制 + checksums + 可选 Cosign 签名验证)。

Q3:GitHub 下载超时/极慢怎么办? 为 wget/curl 指定代理(实测可用,见 5.5 节):curl -x http://<代理IP>:<端口> -LO <URL> 或 export http_proxy=... https_proxy=... 会话级生效;内网服务器也可先在能联网的机器下载,再scp/ftp传到服务器,sha256 校验通过即可使用。

Q4:下载了 arm64 发布件在 x86 服务器上执行报"cannot execute binary file"? 发布件架构与 CPU 架构不匹配。先用 uname -m(x86_64 → amd64;aarch64 → arm64)与 dpkg --print-architecture 确认,再下载对应架构文件(对照第三章矩阵表)。

Q5:解密时报 "Recovery failed because no master key was able to decrypt the file"(实测原文):

Recovery failed because no master key was able to decrypt the file. In
order for SOPS to recover the file, at least one key has to be successful,
but none were.

这是 age 私钥不可用导致:私钥文件不在默认路径 ~/.config/sops/age/keys.txt、路径不对,或文件内容不是该文件的接收者私钥。实测验证方法:把 keys.txt 移走后解密即复现上述报错,移回即恢复。处理:确认 SOPS_AGE_KEY_FILE 指向正确文件,或把私钥放回默认路径;cat keys.txt 确认 # public key: 行与加密文件元数据里的 recipient: 一致。

Q6:sops 命令没找到,但 .deb 明明装成功了? 检查两件事:dpkg -L sops 确认二进制在 /usr/bin/sops;echo $PATH 确认 /usr/bin 在 PATH 中(手工定制过 PATH 的环境可能缺失)。非 root 用户执行时确认对二进制有 x 权限(ls -l /usr/bin/sops,默认 0755 无需调整)。

十一、卸载与清理

卸载 .deb 安装的 sops:

dpkg -r sops

实测回显:

(Reading database ... 11311 files and directories currently installed.)
Removing sops (3.13.3) ...

卸载二进制安装的 sops(删除单文件即可):

rm -f /usr/local/bin/sops

卸载 age:

# apt 版
apt-get remove -y age
# 官方二进制版
rm -f /usr/local/bin/age /usr/local/bin/age-keygen

清理密钥与临时文件(⚠️ 会永久丢弃解密能力,确认不再需要任何由该密钥加密的文件后再执行):

rm -rf /root/.config/sops/age
rm -f /tmp/sops_3.13.3_amd64.deb /tmp/sops-v3.13.3.linux.amd64 /tmp/sops-v3.13.3.checksums.txt /tmp/age-v1.3.2-linux-amd64.tar.gz

卸载验证:

which sops age age-keygen; echo "exit=$?"

实测回显(全部卸载后应找不到命令):

exit=1

十二、参考链接

  1. sops v3.13.3 Release 页(含全部发布件下载):https://github.com/getsops/sops/releases/tag/v3.13.3
  2. sops 官方仓库与 README:https://github.com/getsops/sops
  3. age v1.3.2 Release 页:https://github.com/FiloSottile/age/releases/tag/v1.3.2
  4. age 官方仓库:https://github.com/FiloSottile/age
  5. 本系列配套文档:《sops 3.13.3 介绍与选型指南》、《sops 3.13.3 常用 CLI 命令与工具详解》