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

プライベートキーファイルをテキストエディタで開くと、ENCRYPTEDRSA / DSAキーファイルの2行目が表示されます。たとえば、

 -----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

関連情報