Unk*_*own 40 certificate ssh openssl fingerprint
我有一个 PEM 文件,我将它添加到正在运行的 ssh-agent 中:
$ file query.pem
query.pem: PEM RSA private key
$ ssh-add ./query.pem
Identity added: ./query.pem (./query.pem)
$ ssh-add -l | grep query
2048 ef:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX ./query.pem (RSA)
Run Code Online (Sandbox Code Playgroud)
如何直接从文件中获取密钥的指纹(我在 ssh-agent 中看到的)?我知道ssh-keygen -l -f some_key适用于“普通”ssh 密钥,但不适用于 PEM 文件。
如果我在 .pem 文件上尝试 ssh-keygen,我会得到:
$ ssh-keygen -l -f ./query.pem
key_read: uudecode PRIVATE KEY----- failed
key_read: uudecode PRIVATE KEY----- failed
./query.pem is not a public key file.
Run Code Online (Sandbox Code Playgroud)
这个键开始于:
-----BEGIN RSA PRIVATE KEY-----
MIIEp.... etc.
Run Code Online (Sandbox Code Playgroud)
与“常规”私钥相反,它看起来像:
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,E15F2.... etc.
Run Code Online (Sandbox Code Playgroud)
Mik*_*e D 56
AWS 的“验证您的密钥对指纹”提供了两种解决问题的单行方式,具体取决于您的密钥是如何创建的。
如果您使用 AWS 创建了密钥对:
$ openssl pkcs8 -in query.pem -inform PEM -outform DER -topk8 -nocrypt | openssl sha1 -c
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
Run Code Online (Sandbox Code Playgroud)
或者,如果您使用第三方工具创建了密钥对:
$ openssl rsa -in query.pem -pubout -outform DER | openssl md5 -c
writing RSA key
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
Run Code Online (Sandbox Code Playgroud)
(在上面的输出中编辑了指纹)
omi*_*nug 43
如果你想找回丢失的公钥文件的指纹,你可以从私钥文件中恢复它:
$ ssh-keygen -yf path/to/private_key_file > path/to/store/public_key_file
Run Code Online (Sandbox Code Playgroud)
然后您就可以确定公共指纹:
$ ssh-keygen -lf path/to/store/public_key_file
2048 SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX user@host (RSA)
Run Code Online (Sandbox Code Playgroud)
在一些较新的系统上,这会打印密钥的 SHA256 指纹。您可以使用选项打印密钥的 MD5 指纹(冒号形式)-E:
$ ssh-keygen -E md5 -lf path/to/store/public_key_file
2048 MD5:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx user@host (RSA)
Run Code Online (Sandbox Code Playgroud)
或者作为一个命令行:
$ ssh-keygen -yf /etc/ssh/ssh_host_ecdsa_key | ssh-keygen -E md5 -lf -
2048 MD5:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx user@host (RSA)
Run Code Online (Sandbox Code Playgroud)
这是一个单行程序,它应该可以执行您想要的操作,而无需在本地创建公钥文件。
$ ssh-keygen -lf /dev/stdin <<< $( ssh-keygen -f ~/.ssh/keyname.pem -y )
2048 14:df:c7:b7:f1:26:7f:87:d5:e7:10:6c:ac:af:a2:03 /dev/stdin (RSA)
Run Code Online (Sandbox Code Playgroud)
这使用 bash here 字符串<<<以使 stdin 可用作常规文件 ( /dev/stdin) 而不是管道,因为ssh-keygen它只会对文件进行操作。
从openssh 7.2 版开始, ssh-keygen支持标准输入的指纹识别:
请注意,此命令将与使用密码且未使用代理的私钥中断。它应该适用于由 AWS 或 OpenStack 生成的不使用密码短语的 pem 文件。
有关更多信息,请参阅/sf/ask/184475231/。
| 归档时间: |
|
| 查看次数: |
76055 次 |
| 最近记录: |