SSH 密钥同步配置参考
关联 Issue: #2182
概述
本文档详细说明 SSH 密钥同步的配置选项、安全评审流程和最佳实践。
配置文件
位置
/etc/openace/ssh_sync_allowlist.yaml
权限
- 权限:
600 - Owner:
root:root - 原因:配置文件可能包含敏感信息,需要保护
格式示例
# SSH 密钥同步白名单配置
# 路径:/etc/openace/ssh_sync_allowlist.yaml
# 允许同步的文件列表
allowlist:
# 默认白名单(已知主机列表)
- name: "known_hosts"
type: "known_hosts"
content_check: false
description: "已知主机列表"
- name: "known_hosts.old"
type: "known_hosts"
content_check: false
description: "known_hosts 备份"
- name: "known_hosts.old.*"
type: "known_hosts"
content_check: false
description: "known_hosts 历史备份"
# 示例:允许公司公钥同步(需要安全评审)
- name: "company_*.pub"
type: "public_key"
content_check: true
max_size: 1MB
approval_required: true
security_review:
reviewed_by: "security-team"
reviewed_at: "2026-01-15"
review_notes: "允许公司公钥同步"
# 黑名单(强制,不可配置)
denylist_patterns:
- "id_*"
- "*.pem"
- "*.key"
- "*.socket"
- "agent.*"
- "token_*"
- "*.token"
# 升级处理策略
upgrade_action: "backup"
# 审计日志配置
audit_log:
path: "/var/log/openace/ssh-sync.log"
max_size: 100MB
retention_days: 30
环境变量
OPENACE_SSH_UPGRADE_ACTION
升级处理策略。
可选值:
warn: 仅告警,不删除文件backup: 备份文件到~/.ssh/legacy_backup_YYYYMMDD_HHMMSS/,然后删除delete: 直接删除文件(仅删除内容指纹匹配的文件)
默认值: backup
使用场景:
warn: 审计模式,确认检测逻辑正常backup: 生产环境推荐,有回退能力delete: 确认无误后的清理模式
OPENACE_SSH_UPGRADE_REQUIRE_CONFIRM
是否需要人工确认处理 legacy 私钥。
可选值:
true: 需要人工输入 "yes" 确认false: 自动处理
默认值: false
使用场景:
- 重要系统升级时设置
true - 自动化部署时设置
false
OPENACE_SSH_DETECT_ENCODED_KEYS
是否检测编码后的私钥(Base64、Hex)。
可选值:
true: 检测编码私钥false: 仅检测明文私钥
默认值: false
注意:启用会增加性能开销和误判风险。
安全评审流程
评审要求
以下情况需要安全评审:
- 添加新的文件模式到白名单
- 同步 SSH 配置文件片段
- 同步非标准的公钥文件
评审人 员授权
授权评审人员列表存储在:/etc/openace/authorized_reviewers.yaml
authorized_reviewers:
- name: "security-team"
email: "security@company.com"
valid_from: "2023-01-01"
- name: "ops-team"
email: "ops@company.com"
valid_from: "2023-01-01"
评审有效期
- 评审有效期为 1 年(可配置)
- 过期评审需要重新评审
- 未授权人员的评审无效
评审记录
每次评审必须记录:
security_review:
reviewed_by: "security-team" # 评审人员(必须在授权列表中)
reviewed_at: "2026-01-15" # 评审日期
review_notes: "允许公司公钥同步" # 评审说明
审计日志
日志位置
/var/log/openace/ssh-sync.log
日志格式
[TIMESTAMP] [LEVEL] [USER] MESSAGE
日志级别
INFO: 正常操作WARN: 需要关注的问题ERROR: 严重问题
日志事件
| 事件 | 级别 | 说明 |
|---|---|---|
SYNC_SUCCESS | INFO | 成功同步文件 |
SYNC_DENIED | WARN | 拒绝同步文件 |
LEGACY_KEY_DETECTED | ERROR | 检测到 legacy 私钥 |
LEGACY_KEY_BACKUP | INFO | 备份 legacy 私钥 |
LEGACY_KEY_DELETED | WARN | 删除 legacy 私钥 |
日志轮转
- 最大大小:100MB
- 保留天数:30 天
- 自动轮转:每日
- 自动压缩:gzip
命令行工具
查看帮助
/usr/local/bin/openace-ssh-sync --help
同步 SSH 密钥
/usr/local/bin/openace-ssh-sync --user <username>
检测 legacy 私钥
/usr/local/bin/openace-ssh-sync --user <username> --detect-legacy
Dry-run 模式
/usr/local/bin/openace-ssh-sync --user <username> --dry-run
指定配置文件
/usr/local/bin/openace-ssh-sync --user <username> --config /path/to/config.yaml
升级迁移指南
从 1.x 版本升级
1. 升级前检查
# 检查是否有 legacy 同步的私钥
/usr/local/bin/openace-ssh-sync --user <username> --detect-legacy
2. 配置迁移
旧版本:
- 自动同步所有
/root/.ssh文件
新版本:
- 只同步白名单文件
- 私钥默认不同步
3. 推荐行动
- 为每个用户生成独立的 deploy key:
ssh-keygen -t ed25519 -f /home/<user>/.ssh/id_ed25519_<project>
- 将公钥添加到 Git 仓库:
cat /home/<user>/.ssh/id_ed25519_<project>.pub
# 添加到 GitHub/GitLab 的 deploy keys
- 测试 Git SSH 访问