
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Cashier是一个SSH证书颁发机构(CA),用于管理OpenSSH证书认证。OpenSSH支持使用SSH证书进行身份验证,证书包含公钥、身份信息并由标准SSH密钥签名。与普通SSH密钥相比,证书可包含更多信息(允许使用的用户、有效期、权限等),且无需分发到每台机器(仅需服务器信任签名密钥),支持吊销,适用于集中化管理SSH访问的场景。
permit-pty)、最大有效期,确保访问权限可控。配置分为server、auth、ssh、aws、vault等部分,支持HCL格式。
文件路径说明
以下配置项的文件路径支持多种类型(除http_logfile仅支持本地文件):
/data/ssh_signing_key、tls/server.key/s3/开头,如/s3/my-bucket/ssh_signing_key(需配置aws)/gcs/开头,如/gcs/my-bucket/ssh_signing_key/vault/开头,如/vault/secret/cashier/ssh_signing_key(需配置vault)server配置
控制服务端基础行为,包括TLS、数据库、监听地址等。
| 参数 | 类型 | 说明 |
|---|---|---|
use_tls | bool | 是否启用TLS,启用时需配置tls_key+tls_cert或letsencrypt_servername |
tls_key | string | TLS私钥路径 |
tls_cert | string | TLS证书路径 |
letsencrypt_servername | string | Let's Encrypt证书的FQDN |
address | string | 监听IP地址(默认监听所有地址) |
port | int | 监听端口 |
user | string | 服务降级的用户(注意:Go运行时限制可能导致部分线程保留权限) |
cookie_secret | string | 会话cookie的认证密钥(可存储于Vault,格式/vault/path/key) |
csrf_secret | string | CSRF保护的认证密钥(可存储于Vault) |
http_logfile | string | HTTP请求日志路径(仅支持本地文件) |
require_reason | bool | 是否要求客户端提供申请证书的原因(默认false) |
database | object | 数据库配置(用于记录证书信息) |
database配置示例(支持mysql、sqlite、mem类型):
hclserver { database { type = "mysql" address = "my-db-host.corp" username = "user" password = "passwd" # 可存储于Vault:/vault/secret/cashier/mysql_password dbname = "cashier_production" } database { type = "sqlite" filename = "/data/cashier.db" # 本地SQLite文件路径 } }
auth配置
配置用户身份验证(OAuth)。
| 参数 | 类型 | 说明 |
|---|---|---|
provider | string | OAuth提供商(支持"google"、"github"、"gitlab"等) |
oauth_client_id | string | OAuth客户端ID(可存储于Vault) |
oauth_client_secret | string | OAuth客户端密钥(可存储于Vault) |
oauth_callback_url | string | OAuth回调URL(路径固定为/auth/callback) |
users_whitelist | array | 允许访问的用户白名单(未设置则允许所有域/组织用户) |
provider_opts | object | 提供商特定选项(如GitHub的organization、Google的domain) |
provider_opts示例:
hclauth { provider = "google" provider_opts { domain = "example.com" # 仅允许example.com域用户 } } auth { provider = "github" provider_opts { organization = "my-org" # 仅允许my-org组织成员 } }
ssh配置
控制SSH证书的签名规则。
| 参数 | 类型 | 说明 |
|---|---|---|
signing_key | string | SSH证书签名私钥路径(使用ssh-keygen生成,需安全存储) |
additional_principals | array | 额外添加到证书的主体(默认仅包含请求者***的用户名部分) |
max_age | string | 证书最大有效期(Go time.Duration格式,如24h) |
permissions | array | 证书允许的操作(参考ssh-keygen -O选项,如["permit-pty", "permit-port-forwarding"]) |
aws配置(可选)
用于访问存储在AWS S3的文件(如签名密钥),支持通过IAM角色或环境变量配置。
| 参数 | 类型 | 说明 |
|---|---|---|
region | string | S3存储桶所在区域(如us-east-1) |
access_key | string | AWS访问密钥ID(可存储于Vault) |
secret_key | string | AWS密钥(可存储于Vault) |
vault配置(可选)
用于访问Vault中的密钥(如签名密钥、OAuth密钥)。
| 参数 | 类型 | 说明 |
|---|---|---|
address | string | Vault服务器URL |
token | string | Vault认证令牌 |
bash# 运行Cashier容器,映射端口10000,挂载当前目录作为配置目录 docker run -it --rm -p 10000:10000 --name cashier -v ${PWD}:/cashier docker.xuanyuan.run/nsheridan/cashier
配置客户端:创建~/.cashier.conf(HCL格式)或使用命令行参数:
hclca = "https://sshca.example.com" # CA服务器地址 key_type = "ed25519" # 密钥类型(rsa/ecdsa/ed25519) validity = "24h" # 证书有效期
获取证书:
bashcashier --config ~/.cashier.conf # 启动客户端,自动打开浏览器进行OAuth认证
信任CA公钥:将CA签名公钥(ssh_ca.pub)添加到sshd_config:
confTrustedUserCAKeys /etc/ssh/ca.pub # 信任CA签名公钥
启用证书吊销(可选):
confRevokedKeys /etc/ssh/revoked_keys # 证书吊销列表路径
bash*/10 * * * * curl -s -o /etc/ssh/revoked_keys https://sshca.example.com/revoked
https://<ca url>/admin/certs)查看已颁发证书,选择需吊销的证书并执行吊销。RevokedKeys配置拒绝该证书访问。欢迎提交PR,依赖项通过govendor管理。详情参考https://github.com/nsheridan/cashier%E3%80%82
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务