首页/安全/取证与溯源速查/SSH 登录指纹与密钥比对
Linux 取证135 条

SSH 登录指纹与密钥比对

sshd 在 Accepted publickey 行记录所用密钥的 SHA256 指纹,与 authorized_keys 逐条计算指纹对照,可锁定是哪把密钥登录的。

取证与溯源速查安全更新于 2026-10-13

SSH 登录指纹与密钥比对

sshd 在登录成功时会把所用密钥的指纹写进日志:公钥认证成功的记录里带有密钥类型与 SHA256 指纹。把日志中的指纹与服务器上授权文件里各条密钥逐一计算出的指纹做对照,就能确定这次登录究竟用了哪一把密钥,而不只是知道“用了密钥登录”。

基本信息

日志特征Accepted publickey for <用户> from <地址> port <端口> ssh2: <类型> SHA256:<指纹>
计算指纹ssh-keygen -lf <文件> -E sha256
对照对象目标账号的 authorized_keys,包含其中的选项与备注
来源限定密钥前的 from= 等选项可能限制允许登录的地址
例外情况证书认证记录的是证书标识,不是密钥指纹

典型使用场景

  • 判断某次成功登录使用的是哪一把密钥
  • 排查是否有未登记的密钥被加入授权列表
  • 核对密钥的来源限制选项是否被放宽或移除
  • 清理离职人员与历史遗留的授权密钥
  • 结合账号归属,判断这次登录行为是否异常

比对指纹

比对指纹
grep 'Accepted publickey' /var/log/auth.log | tail -5          # 日志中记录的指纹
ssh-keygen -lf ~/.ssh/authorized_keys -E sha256                # 逐条计算本地指纹
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub -E sha256     # 主机密钥指纹,用于确认服务端
ls -l --time-style=long-iso ~/.ssh/authorized_keys             # 授权文件的改动时间
awk '{print $1, $NF}' ~/.ssh/authorized_keys | head            # 查看密钥类型与备注

要素读法

要素含义解读要点
密钥类型标记密钥所用算法与授权文件中的条目对应
SHA256 指纹密钥的唯一标识与本地计算结果逐字比对
来源地址本次登录的对端地址与密钥的来源限制一起看
证书标识使用证书时的记录形式需回到签发配置核对,而非比对密钥
密钥登录成功只能说明使用了某把密钥,不能证明操作者就是密钥所有者:密钥可能被复制、共享或窃取。判断责任时还要结合来源地址、登录时段与会话行为一起看。
不同平台与工具输出的指纹在大小写、是否带分隔符上略有差异,比对前先统一格式,否则会把同一把密钥判成两个不同结果,进而得出错误结论。

易错点

  • 日志指纹与本地计算结果的格式不一致,比对结论出错
  • 只看有没有密钥登录,不核对具体使用的是哪一把密钥
  • 把证书登录的记录当作密钥指纹比对,结论自然对不上
  • 忽略授权文件的改动时间,遗漏新增密钥这条线索

数据来源与参考

  • OpenSSH 手册(ssh-keygen 与 sshd 日志格式)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌