如何知道SSH密钥的长度和类型?

jed*_*iah 3 ssh bash key

如何知道SSH密钥的长度和类型?如果可能的话,如何将它们放入变量中以便稍后调用?

Moi*_*ýni 7

您应该能够获得如下详细信息:

# check length and type of key
$ key_length=$(ssh-keygen -lf 00.key | awk '{print $1}'); echo $key_length
$ key_type=$(ssh-keygen -lf 00.key | awk '{print $3}'); echo $key_type


$ ssh-keygen -lf 00.key
2048 SHA256:<key_in_base64> no comment (DSA)

$ ssh-keygen -lf 00.key
256 SHA256:<key_in_base64> no comment (ECDSA)

$ ssh-keygen -lf 00.key
2048 SHA256:<key_in_base64> no comment (RSA)

$ ssh-keygen -lf 00.key
00.key is not a public key file.
Run Code Online (Sandbox Code Playgroud)

  • 顺便说一句,这适用于私钥和公钥。此外,如果密钥类型具有 user@host 引用,则“$3”可能为 $4:“4096 SHA256:GQYs+cJD0cQB5i7uw0ACt6GMOecUXllx4sV5G3zAI70 runner@6c2e8ac9eeac (RSA)”。也许最好将“$3”切换为“$NF”。 (2认同)
  • NF 是一个预定义变量,其值为当前记录中的字段数。awk 每次读取记录时都会自动更新 NF 的值。因此,当您访问 $NF 时,您实际上获得了最后一个标记化项目(即:最后一个单词,如果分隔符是空格)。对于“我喜欢汽车”,NF=3 且 $NF=汽车。 (2认同)