library/spipedspiped(发音为"ess-pipe-dee")是一款用于在 socket 地址之间创建对称加密和认证管道的工具。通过 spiped,用户可连接到一个地址(如本地 UNIX socket),并透明地建立与另一个地址(如远程系统的 UNIX socket)的加密连接。其功能类似 ssh -L 的端口转发,但无需依赖 SSH,仅需预共享对称密钥。
该 Docker 镜像封装了 spiped 工具,提供轻量级、跨平台的加密通信转发能力,适用于需要安全传输数据的各类网络服务场景。
拉取最新版镜像:
bashdocker pull spiped:latest
拉取特定版本(如 Alpine 变体):
bashdocker pull spiped:1.6.4-alpine
spiped 依赖预共享对称密钥,可通过以下命令生成密钥文件(保存至 /path/to/keyfile/ 目录):
bashdocker run -it --rm -v /path/to/keyfile:/spiped/key spiped spiped-generate-key.sh
生成的密钥文件需通过安全渠道(如 scp)传输至通信双方。
容器默认从 /spiped/key 读取密钥(需通过挂载提供),并支持 spiped 原生参数。运行容器无参数时可查看帮助:
bashdocker run -it --rm spiped
输出的参数说明:
usage: spiped {-e | -d} -s <source socket> -t <target socket> -k <key file> [-DFj] [-f | -g] [-n <max # connections>] [-o <connection timeout>] [-p <pidfile>] [-r <rtime> | -R]
核心参数说明:
-e:加密模式(将源地址流量加密后转发至目标地址)-d:解密模式(接收加密流量并解密后转发至目标地址)-s <source socket>:源 socket 地址(格式:[IP]:端口 或 unix:路径)-t <target socket>:目标 socket 地址(格式同上)-k <key file>:密钥文件路径(容器内固定为 /spiped/key)-D:前台运行(容器默认启用)-F:强制关闭已建立连接(容器默认启用)将加密连接(端口 8025)解密后转发至本地 25 端口(如邮件服务):
bashdocker run -d \ -v /path/to/keyfile:/spiped/key:ro \ # 只读挂载密钥文件 -p 8025:8025 \ # 映射加密端口 --init \ # 启用 init 进程处理信号 spiped -d -s '[0.0.0.0]:8025' -t '[127.0.0.1]:25'
将加密连接(端口 9200)解密后转发至名为 elasticsearch 的容器 9200 端口:
bashdocker run -d \ -v /path/to/keyfile:/spiped/key:ro \ -p 9200:9200 \ --link elasticsearch:elasticsearch \ # 链接目标容器 --init \ spiped -d -s '[0.0.0.0]:9200' -t 'elasticsearch:9200'
若无需绑定特权端口(<1024),可指定 --user spiped 以非特权用户运行,增强安全性:
bashdocker run -d \ -v /path/to/keyfile:/spiped/key:ro \ --user spiped \ # 切换为非特权用户 -p 9200:9200 \ --link elasticsearch:elasticsearch \ --init \ spiped -d -s '[0.0.0.0]:9200' -t 'elasticsearch:9200'
以下为加密转发 Elasticsearch 服务的 docker-compose.yml 配置:
yamlversion: '3' services: spiped: image: spiped:latest volumes: - /path/to/keyfile:/spiped/key:ro # 挂载密钥文件 ports: - "9200:9200" # 加密端口映射 links: - elasticsearch:elasticsearch # 链接目标服务 user: spiped # 非特权用户运行 init: true # 启用 init 进程 command: -d -s '[0.0.0.0]:9200' -t 'elasticsearch:9200' elasticsearch: image: elasticsearch:8.10.4 environment: - discovery.type=single-node
| 标签 | Dockerfile 链接 |
|---|---|
1.6.4, 1.6, 1, latest | GitHub |
1.6.4-alpine, 1.6-alpine, 1-alpine, alpine | GitHub |
spiped:<version>(标准版)基于 Debian 基础镜像,包含完整的系统工具链,适用于大多数场景。作为默认镜像,兼容性好,适合作为基础镜像或直接运行。
spiped:<version>-alpine(Alpine 版)基于 Alpine Linux 构建,镜像体积极小(约 5MB 基础镜像),适合对镜像大小敏感的场景。需注意:
bash、git),需在 Dockerfile 中自行安装依赖amd64:amd64/spipedarm32v5:arm32v5/spipedarm32v6:arm32v6/spipedarm32v7:arm32v7/spipedarm64v8:arm64v8/spipedi386:i386/spipedppc64le:ppc64le/spipedriscv64:riscv64/spipeds390x:s390x/spipedmanifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务