一旦确认SSH私钥泄漏,必须立即吊销旧密钥并启用新密钥:先逐台清除服务器authorized_keys中对应公钥,再用ssh-keygen -t ed25519 -a 100生成带密码短语的新密钥对,严格设置权限并用ssh-copy-id部署,最后禁用密码登录、限制root直连以彻底加固。

一旦确认 SSH 私钥已泄漏,必须立即吊销旧密钥并启用新密钥——这不是“换一把锁”,而是彻底切断旧钥匙的全部访问权限。整个过程核心是两步:在服务器端清除旧公钥、本地生成并部署新密钥对,且中间不能留空窗期。
立即从所有服务器移除旧公钥
私钥泄漏后,对应公钥在任何服务器上的存在都等于开放后门。需逐台清理 authorized_keys 文件:
- 登录每台受影响服务器(仍可用旧密钥或密码,若尚未禁用)
- 打开 ~/.ssh/authorized_keys,定位并删除与泄漏私钥匹配的那行公钥(可通过末尾注释如 user@leaked-laptop 识别)
- 确认删除后运行 chmod 600 ~/.ssh/authorized_keys,防止权限错误导致新密钥失效
- 如使用 ssh-copy-id 添加过多个密钥,切勿直接清空文件,只删目标行
生成强健的新密钥对并保护私钥
旧密钥已不可信,新密钥必须从零生成,且强度与保管方式都要升级:
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
- 执行 ssh-keygen -t ed25519 -a 100 -f ~/.ssh/id_ed25519_new(推荐 ed25519,比 RSA 更快更安全;-a 100 启用高强度密钥派生)
- 务必设置密码短语(passphrase),哪怕只是临时过渡——无密码的私钥等于裸奔
- 生成后立即检查权限:ls -l ~/.ssh/id_ed25519_new*,确保私钥权限为 -rw-------
- 将新私钥备份到离线介质(如加密 U 盘),切勿存网盘或同步目录
部署新公钥并验证登录链路
新密钥部署必须在旧密钥失效后、新密钥启用前完成,避免断连:
- 用 ssh-copy-id -i ~/.ssh/id_ed25519_new.pub user@server 推送新公钥(若端口非 22,加 -p 端口号)
- 手动验证:新开终端执行 ssh -i ~/.ssh/id_ed25519_new user@server,确认能免密登录
- 若失败,检查服务器 ~/.ssh 目录权限是否为 700、authorized_keys 是否为 600,以及 sshd_config 中 PubkeyAuthentication yes 是否生效
- 成功登录后,再执行上一步的旧公钥清理——确保新链路已通才动手删旧
加固配置,堵住未来泄漏路径
仅换密钥治标,配置加固才能治本:
- 编辑 /etc/ssh/sshd_config,设 PasswordAuthentication no(禁用密码登录)、PermitRootLogin no(禁止 root 直连)
- 若允许密码登录,至少启用 MaxAuthTries 3 和 LoginGraceTime 30 缩短爆破窗口
- 重启服务:sudo systemctl restart sshd(systemd 系统)或 sudo service ssh restart
- 后续所有新服务器,一律预装新私钥,绝不复用旧密钥或跨环境共享

















