上传文件
  1. base64hub
  2. 密钥与哈希
  3. SSH 密钥指纹

SSH 密钥指纹(SHA256 和 MD5)

粘贴一行 ssh-ed25519 AAAA…、整个 authorized_keys 文件或主机证书,即可一次性得到每个密钥的指纹行,与 ssh-keygen -l 的输出完全相同。

免费 无需注册,不限次数 本地 不上传任何内容 精确 输出与 ssh-keygen -l 及 -E md5 相同 更新于 2026年10月27日

粘贴公钥、authorized_keys 或 known_hosts 文件、证书,或 PEM 公钥。

在你的浏览器中处理。此页面无法将你的数据发送到任何地方: 我们如何确认

如何获取 SSH 密钥指纹

  1. 把一行或多行公钥粘贴到 SSH 密钥,或拖入 .pub、authorized_keys 或 known_hosts 文件。
  2. 每个密钥都会生成一张卡片,显示类型、长度或曲线、注释、SHA256 和 MD5 指纹,以及与 ssh-keygen -l 完全一致的那一行。
  3. 选择 输出 区域的内容:SHA256 指纹、MD5 指纹、PEM 公钥(SPKI 或 PKCS#1)、RFC 4716,或规范化的 OpenSSH 单行格式。
  4. 点击 复制输出 或 下载 获取结果。卡片上的 复制指纹 只复制那一个值。

可接受的输入不只是普通的 .pub 行:带有 from="10.0.0.0/8",command="…" 等选项的 authorized_keys,含主机名或哈希化 |1|… 条目的 known_hosts 行,RFC 4716 的 ---- BEGIN SSH2 PUBLIC KEY ---- 块,OpenSSH 证书,PEM 公钥,以及 -----BEGIN OPENSSH PRIVATE KEY----- 文件。

指纹是如何计算的

一行 OpenSSH 公钥由三部分组成:类型、Base64 密钥数据块和注释。

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG4ZlfvPsoxxd6tpkc1MDAJvZf8exJSDeW7a3xQRKA7d alice@laptop

指纹是解码后数据块的哈希,Ed25519 的数据块为 51 字节:

格式上面这个密钥的值
SHA256(OpenSSH 6.8+ 默认)SHA256:XSOBs9uz/dFf9ci88yKGbLMcjtzblRna8F0VOmxZiv8
MD5(旧格式)MD5:93:07:89:27:05:e1:7a:5d:92:6e:ab:13:1e:48:90:d5

SHA256 指纹以 Base64 书写,并去掉了末尾的 =,所以前缀之后总是 43 个字符。用 Python 做同样的计算:

import base64, hashlib, sys

line = open(sys.argv[1]).read().split()
blob = base64.b64decode(line[1])
digest = hashlib.sha256(blob).digest()
print("SHA256:" + base64.b64encode(digest).decode().rstrip("="))

为什么可以去掉 =,见 填充详解;更多内容见 Python 中的 Base64。

信任主机密钥之前先核对

第一次连接时,OpenSSH 会问:ED25519 key fingerprint is SHA256:…. Are you sure you want to continue connecting? 该怎么回答,取决于你能否把这个值与通过其他途径得到的值进行比对:

  • 在服务器控制台上运行:ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
  • 查看服务商公布的主机密钥指纹
  • 找一位 known_hosts 中已有该主机的同事:把那个文件粘贴到这里,每个条目都会连同指纹一起列出

想在不登录的情况下查看服务器提供了哪些密钥,ssh-keyscan host.example.com | ssh-keygen -lf - 会输出它的所有主机密钥指纹。

通过 Base64 识别密钥类型

数据块以带长度前缀的密钥类型字符串开头,所以每种类型的 Base64 开头都是固定的:

开头密钥类型
AAAAC3NzaC1lZDI1NTE5ssh-ed25519
AAAAB3NzaC1yc2Essh-rsa
AAAAE2VjZHNhLXNoYTItbmlzdHAyNTecdsa-sha2-nistp256
AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tsk-ssh-ed25519@openssh.com(FIDO 安全密钥)
AAAAIHNzaC1lZDI1NTE5LWNlcnQtdjAxEd25519 证书

如果行中的类型名与数据块不一致,卡片会警告这一不匹配。这通常意味着有人手动编辑过这一行。

警告与限制

  • 低于 2048 位的 RSA 会被标记为弱密钥;DSA 密钥也会被标记,因为新版 OpenSSH 已禁用它们。
  • 证书(*-cert-v01@openssh.com)会显示密钥 ID、序列号、用户或主机类型、主体(principals)、有效期、关键选项、扩展,以及签名 CA 密钥的指纹。
  • FIDO 密钥(sk-…)和 Ed448 可以解码,但不支持转换为 PEM。
  • 不显示私钥文件内部存储的注释。
  • SHA256 使用浏览器的 WebCrypto API,需要 https 页面。MD5 由页面自己计算。

常见问题

怎样查看我的 SSH 密钥指纹?

把 .pub 文件的内容粘贴到上面,或者运行 ssh-keygen -lf ~/.ssh/id_ed25519.pub。两者都会输出类似 256 SHA256:XSOBs9uz… alice@laptop (ED25519) 的一行。

为什么在另一台服务器或服务上看到的指纹不一样?

通常是哈希算法不同:旧工具和一些网页控制台以冒号分隔的 hex 显示 MD5(MD5:93:07:89:…),新版 OpenSSH 以 Base64 显示 SHA256。把 输出 切换为 MD5 指纹,就能和旧格式对比。

把私钥文件粘贴到这里安全吗?

工具只读取 OPENSSH PRIVATE KEY 文件中的公钥部分,即使密钥有密码保护,这部分也是未加密存储的;私钥部分不会被触及。不过,养成粘贴 .pub 文件的习惯仍然更好。

SHA256 指纹到底是对什么计算哈希?

对二进制的密钥数据块,也就是 .pub 行中 Base64 部分解码后的结果。注释和前面的密钥类型文本不包括在内,所以给密钥改名不会改变它的指纹。