被签名的数据依次为 6 字节的魔数 SSHSIG、命名空间字符串(例如 git 或 file)、一个保留字段、哈希算法(sha256 或 sha512)以及消息摘要;命名空间可以防止为某一用途生成的签名被重放到另一用途中。输出以 ASCII 装甲形式包在 -----BEGIN SSH SIGNATURE----- 和 -----END SSH SIGNATURE----- 之间,并且包含公钥,因此验证者必须对照受信任的列表检查该公钥,而不能直接接受内嵌的密钥。
ssh-keygen -Y verify -f allowed_signers -I identity -n namespace -s file.sig 用于验证签名;-Y find-principals 把签名映射到身份。Ed25519、ECDSA、RSA(配合 rsa-sha2-*)和 FIDO sk- 密钥都可以使用,因此只需触碰一下安全密钥就能为提交签名。SSH 签名验证工具会在本地执行同样的检查。