云实例的 SSH 密钥管理,核心是让私钥只留在可信设备上,并确保需要时能及时撤销访问。做好云端实例SSH密钥管理与登录加固,不只是创建一对密钥,还要安排好分发、权限、备份和离职或设备遗失后的处理。
先分清公钥和私钥
SSH 使用公钥认证:私钥保存在登录者的电脑或密钥管理设备中,公钥则配置在实例允许登录的账户里,常见位置是用户目录下的 .ssh/authorized_keys。登录时,客户端用私钥完成认证,不会把私钥发送到服务器。
公钥可以部署到服务器,但仍应限制其适用账户和用途。私钥一旦泄露,就应视为凭据已经暴露;不要把它上传到代码仓库、工单附件、共享网盘,也不要复制进实例。多人共用同一把私钥会让审计和撤销变得困难,最好按人员或自动化任务分别签发。
从生成到首次登录:按步骤操作
- 在可信客户端生成密钥。使用 OpenSSH 的 ssh-keygen。现代系统通常可选择 Ed25519;若旧设备或系统不支持,再考虑符合兼容要求的 RSA 密钥。为私钥设置口令,即使文件被复制,攻击者仍需额外破解口令。
- 妥善保存私钥。保留私钥在受控设备,备份时使用加密存储并限制可访问人员。Linux 和 macOS 上可检查文件权限;私钥文件通常应仅允许所有者读取,例如设置为 600。不要对公钥文件套用同样的保密要求。
- 将公钥加入目标账户。通过云平台提供的密钥注入功能,或以已验证的安全方式写入实例账户的 authorized_keys。不同镜像和初始化配置可能采用不同机制,添加后应确认公钥确实进入了预期账户。
- 先测试新密钥,再调整旧入口。使用 ssh -i 指定私钥连接,并确认用户名、实例地址和网络规则正确。保留现有可用会话,直到新密钥登录成功;否则误改配置可能导致无法远程进入。
- 确认权限边界。为密钥关联独立用户,按工作需要授予权限。确需管理员操作时,使用受控的提权流程,而不是让所有密钥都直接登录 root。
降低被盗用和误锁风险
加强登录入口
在确认密钥登录正常后,可检查 SSH 服务配置:关闭密码认证、禁止 root 直接登录,并只允许预期账户连接。配置项名称和生效方式会随系统版本及管理方式变化;修改前先备份配置,检查语法,并保留一个已登录的管理会话,验证成功后再重载服务。不要未经验证就关闭密码登录,以免尚未部署密钥时失去入口。
网络层也要限制暴露范围。若管理人员有固定出口地址,可在云防火墙或主机防火墙中仅开放 SSH 所需端口给该来源;地址经常变化时,可考虑经由跳板机或受控远程访问入口。限制来源不能替代密钥保护,但能减少任意网络直接尝试登录的机会。
做好轮换、撤销和留档
为每把密钥记录持有人、用途、关联账户、创建时间和撤销方式。人员离岗、设备丢失、项目结束或怀疑私钥泄露时,尽快从对应账户的 authorized_keys 删除公钥,并检查云平台的密钥注入、实例初始化和自动化配置;只删除本地私钥文件,不会自动取消服务器上的授权。
云端实例SSH密钥管理应包含周期性核查,但不必对所有环境设定同一个轮换期限。可按风险和组织要求确定检查频率;高权限或短期任务的密钥应更严格地控制使用期限。轮换时先部署并验证新密钥,再撤销旧公钥,避免切换顺序造成中断。发现异常登录后,同时检查登录日志、其他账户的授权列表和相关自动化凭据。
常见问题
丢了私钥,能从公钥恢复吗?
不能。公钥无法还原私钥。应使用另一个仍有效的管理员入口添加新公钥,再撤销丢失密钥对应的授权。
私钥设置了口令,还需要保护文件吗?
需要。口令能增加一道防护,但私钥仍应限制读取权限、加密备份,并避免发送给他人。
删除云平台控制台里的密钥,就能撤销实例访问吗?
不一定。若公钥已经写入实例的 authorized_keys,仍需检查并删除对应条目;具体还要看镜像和初始化机制是否会再次注入密钥。
多人能否共用一把密钥?
不建议。独立密钥便于识别使用者,也能在单人离岗或设备遗失时单独撤销。云端实例SSH密钥管理应把身份、权限和撤销动作对应起来。