ssh密钥安全关键在于全生命周期管控而非单纯算法强度;推荐ed25519替代rsa,私钥权限必须为600,禁用空密码短语,实行“一人一钥”,定期轮换并显式吊销。

SSH 密钥本身安全,但用法不当容易引入风险。关键不在密钥生成有多“强”,而在于整个生命周期的管控是否到位——从生成、分发、使用到轮换和废弃,每个环节都可能成为突破口。
密钥生成要匹配场景,别盲目追求长度
默认的 ssh-keygen -t ed25519 就足够安全,适合绝大多数场景。Ed25519 算法抗侧信道攻击、签名快、公钥短,比 RSA 更推荐。如果必须兼容老旧系统,可用 -t rsa -b 4096,但避免用 2048 位 RSA 或 DSA(已弃用)。不建议手动指定密码短语为空——哪怕只是测试环境,也应设一个非空短语(可用 ssh-keygen -N "your_passphrase" 设置)。
私钥必须严格保护,禁止明文共享或硬编码
私钥文件(如 id_ed25519)权限必须是 600(chmod 600 ~/.ssh/id_ed25519),且不能存入 Git、配置管理工具或 CI/CD 的原始脚本中。常见错误包括:
针对Linux系统,phpStudy团队推出全网首家linux docker容器面板,只要一个命令,快速安装面板,在面板里可以自行选择软件版本,可以方便的进行安全配置,就算没有Linux基础也可以快速搭建和管理PHP服务器环境!
- 把私钥直接写进 Dockerfile 或 GitHub Actions 的 secrets(即使加密,也不该是长期密钥)
- 多人共用同一对密钥——应“一人一钥”或“一服务一钥”
- 在跳板机或中间节点上保留未加密私钥
用 ssh-agent 管理会话,减少密码输入但不牺牲安全
本地开发时启用 ssh-agent,配合 ssh-add -t 3600 设置自动过期(比如 1 小时),既避免反复输密码,又限制泄露后的窗口期。生产环境服务器上一般禁用 agent forwarding(ForwardAgent no),防止跳转时被中间主机窃取代理句柄。如需临时转发,应在连接命令中显式启用:ssh -o ForwardAgent=yes user@host,且仅限可信跳板。
定期轮换 + 显式吊销,不能只靠“不用就等于失效”
密钥不是一次生成终身有效。建议每 6–12 个月轮换一次,尤其在员工离职、设备丢失或怀疑泄露后立即操作:
- 从目标服务器的
~/.ssh/authorized_keys中删除对应公钥行 - 若使用 SSH CA,可通过 CA 吊销证书(
ssh-keygen -k -f /path/to/ca -s /path/to/revoke_cert) - 在 Git 托管平台(如 GitHub/GitLab)中主动移除旧密钥
不复杂但容易忽略。










