生产环境ssh密钥管理核心是“连得稳、管得住、查得清、防得住”,涵盖生成(优先ed25519、严格权限、用途命名)、服务端加固(禁密码、禁root、明确authorized_keys路径)、分发管控(自动化工具注入、私钥加密存储、角色隔离)、审计应急(日志记录指纹、authorized_keys限制项、应急账号+双因素、定期轮换与清理)。

生产环境用 SSH 密钥,核心不是“能不能连上”,而是“连得稳、管得住、查得清、防得住”。它不是配完就完事的一步操作,而是一套贯穿生成、分发、使用、轮换、审计的完整流程。
密钥生成:选对算法,设好权限
优先用 ed25519 算法(比 RSA 更快更安全):
- 执行
ssh-keygen -t ed25519 -C "prod-deploy@team" -f ~/.ssh/id_ed25519_prod - 私钥必须严格权限:
chmod 600 ~/.ssh/id_ed25519_prod - 公钥可读即可:
chmod 644 ~/.ssh/id_ed25519_prod.pub - 避免用默认名(如 id_rsa),不同用途区分命名,比如
id_ed25519_deploy、id_ed25519_backup
服务端配置:禁密码 + 锁路径 + 限用户
不能只放公钥,还要加固 SSH 服务本身:
宝塔面板11.3.0是一款针对Linux服务器设计的可视化管理工具,通过重构核心模块实现资源占用显著降低,尤其适合低配置服务器环境。它将复杂的命令行操作转化为直观的图形界面,帮助开发者快速完成网站部署、环境配置及日常运维工作,无需专业技术背景即可高效管理服务器。
- 编辑
/etc/ssh/sshd_config,确认以下几项: PubkeyAuthentication yes-
PasswordAuthentication no(上线前务必验证密钥已生效) -
PermitRootLogin no(用普通用户 + sudo,不直登 root) -
AuthorizedKeysCommand或AuthorizedKeysFile .ssh/authorized_keys(确保路径明确) - 重启服务:
sudo systemctl restart sshd
密钥分发与管理:不手传、不硬编码、不共享
生产环境严禁手动复制公钥或把私钥塞进脚本:
- 统一通过配置管理工具(Ansible / SaltStack)注入公钥到
~/.ssh/authorized_keys - 私钥绝不存 Git、不进 CI/CD 原始脚本;CI 中用加密凭据(如 GitHub Secrets、Vault)动态注入
- 为不同角色/系统分配独立密钥(例如:部署用一套,备份用一套,监控拉取用一套)
- 禁用弱密钥格式(如 PEM 的旧版 RSA 1024),定期扫描
ssh-keygen -l -f校验强度
审计与应急:留痕可溯,兜底可控
密钥登录后,仍需保障可观测性和应急通道:
- 开启详细日志:
LogLevel VERBOSE,记录密钥指纹(ssh -v可看到 fingerprint) - 在
authorized_keys每行开头加注释或限制项,例如:command="/usr/local/bin/deploy.sh",no-port-forwarding,from="10.10.1.0/24" ssh-ed25519 AAAA... deploy-bot - 保留一个带密码的应急账号(非 root),并启用 TOTP 或硬件密钥双因素,仅用于密钥失效时人工介入
- 建立密钥生命周期策略:每 6–12 个月轮换,旧密钥从所有服务器
authorized_keys中清理,并归档日志备查










