凌晨两点,某台生产 VPS 的负责人离职后,旧运维仍握着管理员私钥;私钥又被复制到不受控电脑,Root远程登录随之放开。此时只覆盖 authorized_keys,既清不掉泄露者已有会话,也可能把唯一运维者挡在门外。密钥加固的目标,是让生成、分发、轮换、吊销和应急接管都有记录、有边界。
如果你正在选机器,或者想先把线路和配置跑通再谈长期方案,可以先看看这几家的线路说明和技术参数:vollcloud(原生IP精品线路),先看清带宽线路、流量策略和退款条款,再决定要不要迁。
一、密钥生成与分发必须分层控制
密钥生成优先采用 Ed25519算法,例如用 ssh-keygen -t ed25519 -a 100 创建带口令的密钥。公钥可以分发,私钥只进入加密保管库或受控终端,不经聊天工具、共享网盘传递。口令能降低磁盘失窃风险,却不能替代权限控制;所有主机复用一把密钥,更会让一次泄露扩大成全网失守。

分发时只把公钥写入目标账号的 authorized_keys,并核对属主、权限与 SELinux 标签。运维账号按最小权限授权分配 sudo 白名单,Root远程登录默认关闭,自动化任务改用低权账号。带端口转发、任意命令或代理选项的公钥必须单独审查,否则持有者获得的权限会超出预期。
二、从状态清单判断轮换与接管
判断是否需要 SSH密钥轮换,先盘点每把公钥的指纹、责任人、适用主机、权限范围和最后使用时间,并标注正常、待轮换、疑似泄露、已吊销等状态。清单还要覆盖云控制台、CI 密钥、自动化令牌及离线副本,否则删除服务器上的文件并不会消除其他入口。
正常轮换可让新旧密钥短时并行:新公钥写入并验证后再撤销旧公钥;发生泄露则立即吊销、终止现有会话并追查来源。注意修改 authorized_keys 不会自动踢下线,重启 sshd 也不等于清除已有连接;同时核对算法、来源限制和账号有效期,避免兼容旧算法留下退路。

登录来源审计要关联公钥指纹、源地址、时间和目标账号。借助 ServLlama 汇总主机与密钥状态时,也应保留指纹和时间戳,不能只显示在线状态。异常来源、陌生指纹或连续失败应触发调查;若日志只有用户名,事后仍难确认究竟是哪把钥匙进入。
安全接管不能依赖临时群里发送私钥。应预设独立应急账号或封存公钥,绑定双人复核、有效期、单次使用和完整审计,并定期演练。判断方案是否合格,可问三点:负责人失联后谁能验证身份,泄露后多快能撤权,撤权后如何恢复服务。三个答案都明确,才算具备可控的接管能力。
密钥轮换与 Root 远程登录收口
执行 SSH密钥轮换 时,先生成新的 Ed25519算法 密钥对,再把公钥追加到账号的 ~/.ssh/authorized_keys。私钥只留在受控终端,并用口令或硬件密钥保护;公钥注释写明用途、负责人和失效日期。顺序必须是“新旧并行、验证后撤销”:另开终端确认新密钥可用后,才删除旧公钥并撤销旧凭据。
常见坑是直接覆盖 authorized_keys、测试前关闭旧密钥,或过早重载 sshd,这些操作都可能中断管理入口。多人共用主机、权限过宽的私钥,以及把 passphrase 写进脚本,也会扩大泄露面。轮换记录应保存公钥指纹、批准人和撤销时间;客户端出现 known_hosts 指纹告警时,要先核查实际密钥,不能直接删除旧记录。
针对 Root远程登录,应在 sshd_config 中设置 PermitRootLogin no,而不只是关闭密码;prohibit-password 仍允许 Root 使用密钥登录。先用 sshd -t 检查语法,再重载服务,并另开连接验证普通运维账号。若存在 Match、Include 或发行版脚本,要结合 sshd -T -C 核对目标连接的实际配置,避免规则被覆盖。

最小权限授权与登录来源审计
最小权限授权应使用独立运维账号,不共享 deploy 或 root;在 sudoers 中按命令白名单授权,并按需限制 shell、端口转发、代理转发和 X11。尤其不要用 NOPASSWD: ALL 换取省事,否则一次私钥泄露就可能升级为完整提权。authorized_keys 可以组合 from= 与 restrict 控制来源和能力,但必须确认 NAT、代理或跳板机传来的源地址真实,否则容易误封正常用户。
登录来源审计要同时覆盖成功和失败事件。systemd 环境可用 journalctl _COMM=sshd,Debian、Ubuntu 还应检查 /var/log/auth.log;记录账号、来源地址、认证方式、密钥指纹和时间。公钥指纹可用 ssh-keygen -lf ~/.ssh/authorized_keys 核对,必要时提高 LogLevel,但不得记录口令、私钥或敏感载荷。日志应集中留存,并为暴力尝试、异地登录和异常账号建立告警。
上线前按此清单逐项签收:① 用 ssh-keygen -t ed25519 -a 100 生成并加密私钥;② 将公钥写入 ~/.ssh/authorized_keys,执行 chmod 700 ~/.ssh 与 chmod 600 ~/.ssh/authorized_keys;③ 用 sshd -t 校验后重载,并以第二个终端验证;④ 确认 PermitRootLogin no、PasswordAuthentication no,且普通账号的 sudo 可用;⑤ 删除旧公钥、离职账号和重复密钥;⑥ 复核 from=、restrict 与 sudoers 规则;⑦ 抽查 sshd 日志、告警和集中留存;⑧ 保留经过测试的回滚步骤。全部通过后再结束旧凭据有效期,并登记下次轮换日期和责任人。


喜欢
顶
难过
囧
围观
无聊





