测试SSH私钥是否有密码保护

测试SSH私钥是否有密码保护

我正在尝试测试是否~/.ssh/id_rsa确实受密码保护。

当你运行时,ssh-keygen你可以选择一个空密码,我正在尝试检测这一点。

单行线可以做到这一点吗?

答案1

如果执行:

ssh-keygen -y -f ~/.ssh/name_of_key

如果没有密码,您将获得打印密钥,如下所示:

ssh-keygen -y -f ~/.ssh/id_dsa
ssh-dss AAAAB3NzaC1kc3M....

如果有密钥密码,系统会要求您输入密码

答案2

如果您在文本编辑器中打开私钥文件,您将能够ENCRYPTED在 RSA/DSA 密钥文件的第二行中看到。例如:

 -----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,373B504621779D53C72BADE597C531A0

答案3

我没有足够的声誉来发表评论,所以我在这里添加。

感谢@Ulrich-Schwarz,我扩展了他的答案来检查我的 $HOME/.ssh/ 中的所有密钥(我生成的密钥,所以我有公共/私有对):

for l in $(ls $HOME/.ssh/*.pub)
do         key=${l%.*}
   if SSH_ASKPASS=/bin/false ssh-keygen -y -f $key < /dev/null > /dev/null 2>&1
   then
       echo -n "NO  password: "
   else
       echo -n "YES password: "
   fi
   echo ${key}
done

相关内容