首页/安全/应急响应速查/公钥指纹比对与注释识别

公钥指纹比对与注释识别

authorized_keys 每行都能编译成指纹:用 ssh-keygen -lf 批量出指纹与注释,与团队已知密钥清单比对,未知即嫌疑。

应急响应速查安全更新于 2026-10-13

为什么算指纹

authorized_keys 里每一行公钥都能算出指纹:用 ssh-keygen -lf 批量输出指纹与注释,再与团队登记的密钥台账比对,未知条目即为嫌疑对象。

注释只能作线索

公钥行尾的注释可以随意填写,攻击者常写成运维惯用的名字来降低辨识度。最终确认要靠指纹,并向私钥持有方核实,而不是依赖注释文本。

基本信息

指纹命令ssh-keygen -lf authorized_keys(输出 SHA256 指纹)
注释字段公钥行尾注释,常写机器名或人名
核对依据与运维密钥台账比对
批量处理遍历各用户主目录与 /etc/ssh
输出格式逐行编号,便于沟通与登记
权限要求读取其他用户的密钥文件需 root

典型使用场景

  • 排查攻击者新增的授权公钥
  • 清理离职人员遗留的密钥
  • 建立密钥台账并与实际比对
  • 事件收尾时确认未授权密钥已全部移除
  • 对多台主机做统一核查

批量生成指纹清单

批量生成指纹清单
ssh-keygen -lf /root/.ssh/authorized_keys
awk '{print NR": "$1" "$NF}' /root/.ssh/authorized_keys | head -n 30
ssh-keygen -lf /home/deploy/.ssh/authorized_keys 2>/dev/null
find / -name authorized_keys -type f 2>/dev/null | head -n 20    # 全盘盘点
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub

输出逐列读法

字段含义正常/异常
密钥长度如 256 位位数过短(如 1024)说明是老密钥
SHA256 指纹密钥唯一标识与台账核对的主要依据
注释行尾说明仅作线索,可以被伪造
文件路径该行的来源文件与用户和主机对应,便于定位
指纹是核对依据而不是判定本身:还要结合该密钥对应的登录记录,确认是否被实际使用过以及从哪些来源登录。
只算一个文件远远不够:各用户主目录、/etc/ssh 与 root 家目录都要过一遍,攻击者常把公钥放在不显眼的位置。

清理时的处理顺序

  • 先记录指纹与原文件内容
  • 把原文件备份到证据目录并计算哈希
  • 删除未授权条目并通知持有方更换密钥
  • 复查登录日志,确认该密钥是否被使用过

密钥核查的扩展面

  • 各用户 .ssh 目录下的 authorized_keys 与 config
  • 系统级 sshd_config 的 AuthorizedKeysFile 设置
  • 跳板机与堡垒机上的密钥托管清单
  • CI/CD 与自动化系统中的部署密钥

易错点

  • 把注释当身份:注释可以伪造,必须用指纹核对
  • 只算一个文件:各用户与 /etc/ssh 下的密钥都要检查
  • 删除前不留档:后续无法证明哪些条目被移除
  • 忽略密钥长度:过短的旧密钥本身也是风险
  • 删除后不复查:未授权密钥是否被实际使用过需要确认

数据来源与参考

  • ssh-keygen(1) 手册
  • OpenSSH 密钥管理实践

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌