誰かのSSHキーに空のパスワードが含まれているかどうかを確認する方法は?

誰かのSSHキーに空のパスワードが含まれているかどうかを確認する方法は?

私のLinuxとFreeBSDシステムのいくつかは何十人ものユーザーを持っています。ワーカーはこれらの「sshゲートウェイ」ノードを使用して、SSHを介して他の内部サーバーにアクセスします。

それらの一部が暗号化されていないSSH秘密鍵(鍵なしの鍵)を使用していることが懸念されます。パスワードこれは良くないクラッカーがこのコンピュータから自分のアカウントにアクセスできる場合は、秘密鍵を盗み、同じキーを使用してすべてのコンピュータにアクセスできるためです。セキュリティ上の理由から、すべてのユーザーはSSH秘密鍵をパスワードで暗号化する必要があります。

秘密鍵が暗号化されていない(パスワードが含まれていない)かどうかはどうすればわかりますか? ASCII以外のArmoredキーと比較して、ASCII Armoredキーでこれを行う他の方法はありますか?

修正する:

これを明確にするために、私はコンピュータにスーパーユーザーアクセスを持っており、誰もが秘密鍵を読むことができるとしましょう。

ベストアンサー1

パスワードが空のOpenSSH秘密鍵は実際には暗号化されません。

暗号化秘密鍵は秘密鍵ファイルで宣言されています。たとえば、

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,7BD2F97F977F71FC

BT8CqbQa7nUrtrmMfK2okQLtspAsZJu0ql5LFMnLdTvTj5Sgow7rlGmee5wVuqCI
/clilpIuXtVDH4picQlMcR+pV5Qjkx7BztMscx4RCmcvuWhGeANYgPnav97Tn/zp
...
-----END RSA PRIVATE KEY-----

そのように

# grep -L ENCRYPTED /home/*/.ssh/id_[rd]sa

これで問題が解決します。

おすすめ記事