type
status
date
slug
summary
tags
category
icon
password
VPS间自动同步SSL证书配置指南
场景说明
两台VPS(vpsA和vpsB)在同一局域网内,需要实现vpsB每6天自动从vpsA同步x-ui的SSL证书文件。
环境信息:
- vpsA IP: 192.168.1.250(证书源服务器)
- vpsB IP: 192.168.1.251(证书目标服务器)
- 证书路径:
/etc/x-ui/server.crt和/etc/x-ui/server.key
一、在vpsA上的配置
1.1 创建同步专用用户
1.2 安装rsync工具
1.3 创建证书文件副本目录
由于证书文件权限限制,需要创建syncuser可读的副本:
1.4 创建自动更新副本的脚本
1.5 设置定时任务自动更新副本
二、在vpsB上的配置
2.1 生成SSH密钥对
2.2 配置SSH密钥认证
方法一:使用ssh-copy-id(推荐)
方法二:手动配置
2.3 测试SSH连接
2.4 创建同步脚本
2.5 测试同步脚本
2.6 设置定时任务
三、验证和维护
3.1 验证证书内容一致性
3.2 查看备份文件
3.3 查看同步日志
3.4 手动触发同步
四、安全建议
- SSH密钥安全
- 定期轮换SSH密钥(建议每年一次)
- 保护好私钥文件权限(600)
- 不要在多个系统间共享同一密钥
- 网络安全
- 确保SSH连接只在局域网内进行
- 考虑使用防火墙限制SSH访问源IP
- 禁用syncuser的密码登录
- 权限最小化
- syncuser只有读取证书副本的权限
- 不给syncuser sudo权限
- 定期审查用户权限
- 监控和告警
- 定期检查同步日志
- 设置日志监控告警(可选)
- 验证证书有效期
- 备份策略
- 保留最近10个证书备份
- 定期测试备份恢复流程
- 考虑异地备份重要证书
五、故障排查
5.1 SSH连接失败
5.2 权限问题
5.3 rsync失败
5.4 服务重启失败
六、工作流程总结
自动化流程
- vpsA每10分钟:自动更新
/home/syncuser/certs/中的证书副本
- vpsB每6天:
- 备份当前证书
- 删除旧证书
- 从vpsA同步新证书
- 重启x-ui服务
- 清理过期备份(保留最近10个)
文件路径说明
vpsA:
- 原始证书:
/etc/x-ui/server.crt和/etc/x-ui/server.key
- 证书副本:
/home/syncuser/certs/server.crt和server.key
- 更新脚本:
/usr/local/bin/update-cert-copies.sh
vpsB:
- 证书目录:
/etc/x-ui/server.crt和/etc/x-ui/server.key
- 同步脚本:
/root/sync_certs.sh
- SSH密钥:
/root/.ssh/cert_sync_key
- 备份目录:
/backup/x-ui-certs/
- 同步日志:
/var/log/cert-sync.log
七、常见问题
Q: 如果vpsA的证书更新了,vpsB多久能同步?
A: vpsA每10分钟更新副本,vpsB每6天同步一次。如需立即同步,可在vpsB上手动执行
~/sync_certs.shQ: 如果同步失败会怎样?
A: 脚本会自动恢复最近的备份,确保服务不中断。查看日志排查问题后可手动重试。
Q: 如何修改同步频率?
A: 编辑vpsB的crontab,修改
*/6 为其他天数。例如每3天:0 2 */3 * * /root/sync_certs.shQ: 备份文件会占用很多空间吗?
A: 证书文件很小(几KB),保留10个备份通常不超过50KB。
Q: 可以同步其他文件吗?
A: 可以修改脚本中的文件路径,但需确保权限配置正确。
结语
本方案通过SSH密钥认证 + rsync实现了安全、自动化的证书同步,具有以下优势:
- ✅ 安全性高:使用SSH密钥认证,权限最小化
- ✅ 自动化:无需人工干预,定时自动同步
- ✅ 容错性强:自动备份和恢复机制
- ✅ 易于维护:详细日志和错误处理
- ✅ 可扩展:可轻松适配其他文件或服务
希望这个配置指南对你有帮助!
- Author:plnl
- URL:https://blog.bende.site/article/sslsync
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts








