如何从字符串中获取SSH公钥的MD5指纹(签名)

问题描述 投票:0回答:2

如果我拥有该密钥的字符串而不是文件,是否可以获取公共密钥的MD5指纹(签名)?

ssh-keygen -l -E md5 -f "path/to/file"

此命令将为我(除其他外)提供密钥的MD5指纹(签名)。我已经阅读了ssh-keygen命令的手册页,并在我的shell中进行了试验,但是我无法使它在字符串而不是文件上运行。我找不到任何接受字符串的参数,并且我尝试了在字符串中进行管道传输,还尝试使用STDIN将字符串提供给ssh-keygen-所有操作均未成功。

我曾尝试在字符串上使用Ruby和Digest :: MD5.hexdigest,但是要么我没有提供正确的字符串,要么我需要使用其他哈希机制,因为我也没有运气。 (我尝试过密钥的各种子字符串)

当然,我可以将字符串写入临时文件,然后在该文件上使用ssh-keygen,但似乎我不必这样做。

我最终想在Ruby中解决这个问题,但是我可以从unix实用程序或bash解决方案开始。如果需要,我可以始终从Ruby执行shell命令。

[如果有关系,我将在macOS Mojave(10.14.6)和Ruby 2.6.4上运行bash(GNU bash,版本3.2.57(1))shell)>

编辑:我将术语从签名更改为指纹,但在括号中保留了签名。我已经看过这两个术语,但我相信指纹更为常见。

如果我有一个该字符串的字符串而不是一个文件,有没有一种方法来获取公共密钥的MD5指纹(签名)? ssh-keygen -l -E md5 -f“ path / to / file”这个命令会给我(除其他...

ruby bash ssh md5 ssh-keygen
2个回答
2
投票

我决定搜索解决该问题的Ruby Gem。我发现了这个:https://github.com/bensie/sshkey。仔细研究源代码,我发现我需要对字符串的密钥部分进行Base64解码,然后对它进行Digest :: MD5.hexdigest来获取密钥的指纹。


1
投票

使用-作为文件名读取stdin作为文件。然后在stdin中输入Bash的<<<"herestring"

© www.soinside.com 2019 - 2024. All rights reserved.