尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

如何让.onion地址永不改变:onionpipe @别名与持久化服务密钥管理完整教程

如何让.onion地址永不改变:onionpipe @别名与持久化服务密钥管理完整教程 如何让.onion地址永不改变onionpipe 别名与持久化服务密钥管理完整教程【免费下载链接】onionpipeOnion addresses for anything.项目地址: https://gitcode.com/gh_mirrors/on/onionpipe你是否遇到过这种情况服务一重启.onion地址就变了一串朋友收藏的链接全部失效onionpipe是 Tor 隐藏服务端口转发工具它能将本地任意端口发布为公网可用的 .onion 地址本文完整教程教你用别名机制和持久化服务密钥让 .onion 地址永不改变并讲解密钥的备份、迁移与安全保管方法 为什么 .onion 地址会变来变去每次运行onionpipe 8000这样的命令时如果没有指定别名onionpipe 会随机生成一个临时密钥对应的 .onion 地址每次启动都不一样。而 Tor 隐藏服务的 .onion 地址本质上是由服务私钥推导出来的私钥不变 → .onion 地址永远不变私钥丢失 → 地址永久失效所以让 .onion 地址永不改变这件事核心就是把私钥持久化保存好。onionpipe 的解决方案是给转发目标起一个别名别名对应一把持久化的ed25519 服务私钥密钥统一存放在本地 secrets 文件中。30秒上手用 别名 创建第一个持久地址安装 onionpipe 后Docker 镜像或make onionpipe本地构建构建入口见 Makefile只需一行命令onionpipe 8000~80my-app这条命令的含义把本机 8000 端口发布到 .onion 地址的 80 端口my-app就是持久化别名。第一次运行时onionpipe 会自动为别名my-app生成一把 ed25519 私钥生成逻辑在 secrets/secrets.go 的EnsureServiceKey将密钥写入默认的 secrets 文件~/.local/share/onionpipe/secrets.json路径定义在 app/app.go用这把密钥注册 Tor 隐藏服务并打印最终 .onion 地址从第二次运行开始只要 secrets 文件还在my-app就永远对应同一个 .onion 地址。 提示不写别名的转发会共用同一个临时地址例如onionpipe 192.168.1.100:8000~80,8080,9000中的多个端口都指向同一个临时 .onion。一个别名可以同时导出多个端口别名可以在多条转发中复用它们共享同一个持久 .onion 地址。例如给 Minecraft 服务器配一个门牌onionpipe 8000~80minecraft 25565minecraft这样.onion:80是论坛网页.onion:25565是游戏端口对外只有一个好记的 .onion 地址 服务密钥管理service 命令一览onionpipe 内置了完整的服务密钥管理子命令实现见 app/service.go不启动转发也能随时管理命令别名作用onionpipe service listls列出所有别名及其 .onion 地址onionpipe service new my-appcreate手动创建新服务密钥并显示地址onionpipe service remove my-apprm/del删除别名及对应密钥地址将永久失效常用查询与创建步骤一键查看所有持久地址onionpipe service ls输出为 JSON 格式例如{ my-app: { address: sd6aq2r6jvuoeisrudq7jbqufjh6nck5b.onion } }手动预创建密钥不启动任何转发onionpipe service new nextcloud之后任何机器、任何时刻只要带着这份 secrets 文件运行onionpipe 80~80nextcloud得到的都是同一个 .onion 地址。secrets.json 文件你的地址保险箱所有持久化秘密都集中在一个 JSON 文件里结构定义在 secrets/secrets.goserviceKeys服务私钥表别名 → ed25519 私钥决定 .onion 地址clientKeys客户端身份密钥表x25519 密钥对用于 Tor 客户端授权自定义密钥存储路径默认路径为~/.local/share/onionpipe/secrets.json可以用--secrets参数改为任意位置onionpipe --secrets /mnt/backup/onion-secrets.json 8000~80my-app⚠️ 一个容易踩的坑加上--anonymousfalse非匿名模式后secrets 文件会自动换成带.not-anonymous后缀的另一份文件两种模式的密钥互不相通逻辑见 app/app.go 的secretsPath。迁移与备份的正确姿势想让地址永不改变secrets 文件就是你的命根子异地备份secrets.json注意它包含私钥请妥善保管迁移服务器时只需把新文件放到--secrets指定路径地址即可无缝延续切勿上传到公开仓库——泄露密钥等于任何人都能顶替你的 .onion 服务Docker 部署持久化地址的关键是挂载数据卷容器默认是用完即弃的secrets 文件如果不落盘容器一删地址就变。onionpipe 项目自带了完整的 Docker Compose 示例Nextcloud 网盘场景就在 examples/nextcloud/docker-compose.yml核心写法services: onionpipe: image: ghcr.io/cmars/onionpipe:main restart: always command: --secrets /data/secrets.json app:80~80nextcloud volumes: - onionpipe:/data要点拆解--secrets /data/secrets.json把密钥固定写到容器内/data目录volumes: - onionpipe:/data用命名卷把该目录持久化到宿主机只要命名卷不删无论容器重建多少次、服务器换几台卷快照迁移后nextcloud的 .onion 地址都保持不变。启动后记得查看日志输出里面会打印最终 .onion 地址 客户端授权只给白名单钥匙如果服务不想对所有人开放可以结合 Tor 客户端授权client auth# Alice 生成自己的身份 onionpipe client new alice # Bob 发布服务时限制只允许 Alice 的公钥访问 onionpipe --require-auth p2pof7vumwsrqqavtovfwqqaw6cqzvtqqe7cjvxt754k6j7blufa 8000~80test客户端身份密钥同样保存在 secrets.json 中EnsureClientKey见 secrets/secrets.go管理命令包括client list、client new、client show-private-key、client remove。常见问题与最佳实践清单地址突然变了检查是否换了 secrets 文件路径、是否误用了--anonymousfalse会读另一份密钥文件忘记备份就service rm了无法找回该地址永久作废只能新建别名想要稳定的非匿名地址用--anonymousfalse注意它读取独立的密钥文件且不支持导入import转发多台机器发布同一地址用同一份 secrets 文件即可但同一时刻只建议一台机器注册该服务密钥安全secrets.json 应设置仅属主可读权限备份时加密存储总结onionpipe 通过别名 alias → 持久化 ed25519 服务密钥 → 稳定 .onion 地址这条链路彻底解决了隐藏服务地址漂移的痛点用别名创建持久地址密钥自动存入 secrets.json用service ls/new/remove管理密钥生命周期用--secrets自定义路径 Docker 命名卷保证密钥长期存活备份好 secrets.json地址就真正永不改变整个项目的转发模型与解析逻辑分别在 config/endpoint.goParseEndpoint负责解析别名和 forwarding/service.gostartExporter将持久密钥注入 Tor 服务中源码阅读也是加深理解的不错方式 【免费下载链接】onionpipeOnion addresses for anything.项目地址: https://gitcode.com/gh_mirrors/on/onionpipe创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表