mips64le/spipedspiped(发音为“ess-pipe-dee”)是一款用于在 socket 地址之间创建对称加密和认证管道的工具。它允许用户连接到一个地址(如本地 UNIX socket),并透明地建立到另一个地址(如远程系统的 UNIX socket)的安全连接。该工具类似于 ssh -L 的端口转发功能,但无需依赖 SSH,仅需预共享对称密钥即可实现轻量级加密通信。
本 Docker 镜像封装了 spiped 工具,提供开箱即用的加密管道功能,适用于需要安全转发网络连接的场景。
-F 参数),适配容器生命周期管理spiped)身份运行,降低权限风险本镜像默认从 /spiped/key 文件读取密钥(-k 参数),并强制以前台模式运行(-F 参数)。其他参数与原生 spiped 工具完全兼容。可通过以下命令查看完整参数列表:
console$ docker run -it --rm mips64le/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,需通过挂载提供)-n <num>:最大并发连接数限制-o <timeout>:连接超时时间(秒)将加密连接从宿主机 8025 端口转发到本地 25 端口(如邮件服务):
console$ docker run -d \ -v /path/to/keyfile:/spiped/key:ro \ # 挂载密钥文件(只读) -p 8025:8025 \ # 映射端口 --init \ # 确保正确处理信号 mips64le/spiped \ -d -s '[0.0.0.0]:8025' -t '[127.0.0.1]:25' # 解密模式:源地址0.0.0.0:8025,目标127.0.0.1:25
将加密连接从宿主机 9200 端口转发到名为 elasticsearch 的容器 9200 端口:
console$ docker run -d \ -v /path/to/keyfile:/spiped/key:ro \ -p 9200:9200 \ --link elasticsearch:elasticsearch \ # 链接目标容器 --init \ mips64le/spiped \ -d -s '[0.0.0.0]:9200' -t 'elasticsearch:9200' # 目标地址为容器名:端口
若无需绑定特权端口(<1024),可通过 --user spiped 以非特权用户运行,增强安全性:
console$ docker run -d \ -v /path/to/keyfile:/spiped/key:ro \ --user spiped \ # 切换为非特权用户 -p 9200:9200 \ --link elasticsearch:elasticsearch \ --init \ mips64le/spiped \ -d -s '[0.0.0.0]:9200' -t 'elasticsearch:9200'
spiped 依赖预共享对称密钥,可通过以下命令生成密钥文件(保存至 /path/to/keyfile/ 目录):
console$ docker run -it --rm \ -v /path/to/keyfile:/spiped/key \ # 挂载密钥文件目录(可写) mips64le/spiped spiped-generate-key.sh # 执行密钥生成脚本
生成后,密钥文件 spiped-keyfile 将保存至 /path/to/keyfile/,需通过安全方式(如 scp)传输到通信双方。
以下是使用 docker-compose 部署 spiped 加密转发 Elasticsearch 的示例:
yamlversion: '3' services: spiped: image: mips64le/spiped volumes: - /path/to/keyfile:/spiped/key:ro # 挂载密钥文件(只读) ports: - "9200:9200" user: spiped # 非特权用户运行 init: true command: -d -s '[0.0.0.0]:9200' -t 'elasticsearch:9200' depends_on: - elasticsearch elasticsearch: image: elasticsearch:7.14.0 environment: - discovery.type=single-node
官方镜像支持以下架构(mips64le 架构不支持本镜像):
amd64arm32v5arm32v6arm32v7arm64v8i386ppc64leriscv64s390x本镜像标签与官方 spiped 版本同步,具体标签及对应 Dockerfile 可参考 Docker Hub。
mips64le 架构不支持本镜像,部署前请确认目标架构是否在支持列表中。:ro)挂载,避免容器内篡改;密钥传输需通过安全通道。--init 参数,确保容器能正确处理 SIGTERM 等信号,实现优雅退出。--user spiped 降低权限风险。本镜像包含的 spiped 软件许可证信息详见 tarsnap.com/spiped.html 或 源码仓库。
镜像中可能包含其他软件(如基础系统组件、Bash 等),其许可证可能不同。用户需自行确保对本镜像的使用符合所有包含软件的许可证要求。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务