如何从公钥或MD5指纹派生计算SHA256指纹
问题根因
SAP SuccessFactors导出的公钥为RFC 4716标准的SSH2格式,和OpenSSH工具默认兼容的单行ssh-rsa/ssh-ed25519开头的公钥格式不匹配,直接执行ssh-keygen -lf自然会报「not a public key file」的错误。你看到的begin ssh2 public key就是这类格式的文件头标识,标准RFC4716格式公钥的头尾应该是4个横杠包裹的结构:
---- BEGIN SSH2 PUBLIC KEY ---- <多行排列的Base64编码公钥内容> ---- END SSH2 PUBLIC KEY ----
如果拿到的文件缺了前后的横杠,手动补齐即可,否则后续转换会报格式错误。
操作方案
方案一:转换格式后计算(适合需要留存OpenSSH格式公钥的场景)
- 用ssh-keygen自带的格式转换能力,把SSH2公钥转成OpenSSH可识别的格式:
参数说明:ssh-keygen -i -f <你的SAP公钥文件完整路径> -m RFC4716 > converted_openssh.pub-i:指定导入非OpenSSH格式的公钥-m RFC4716:明确待转换的源格式为RFC 4716标准的SSH2公钥
- 对转换完成的公钥计算SHA256指纹:
输出结果中ssh-keygen -lf converted_openssh.pub -E SHA256SHA256:后面的字符串就是导入需要的指纹值。
方案二:单命令直接输出指纹(无中间文件)
如果不需要留存转换后的OpenSSH格式公钥,可以通过管道直接传递内容,一条命令拿到结果:
ssh-keygen -i -f <你的SAP公钥文件完整路径> -m RFC4716 | ssh-keygen -lf - -E SHA256
命令中的-参数是让ssh-keygen从标准输入读取公钥内容,执行完不会生成额外的中间文件。
补充说明
- 本地计算出的SHA256指纹和SAP侧提供的MD5指纹只是哈希算法不同,二者对应同一份公钥,计算结果唯一,可以直接用于SFTP平台的公钥导入校验,不需要找SAP侧额外生成。
- 如果转换过程提示格式错误,优先检查原公钥文件的头尾横杠是否完整、公钥内容有没有在传输过程中缺行、混入多余空格或换行。
内容的提问来源于stack exchange,提问作者TechWorkerImposter
相关产品推荐
相关产品推荐

