SSH鍵のチェックにパスフレーズがある


8

SSHキーを使用して他のサーバーのアカウントにアクセスできるユーザーがたくさんいます。現在、私はssh公開鍵を収集し、それらを正しいサーバー上の正しいアカウントに配布するスクリプトを持っています。

私がしたいのは、公開キーを受け入れて配布する前に、スクリプトで特定のユーザーのsshキーにパスフレーズがあることを確認することです。

私が使用して同じように、多くのことを試みたssh-agentssh-addし、ときに問題が来るssh-addパスフレーズの入力を求められます。

opensslパスフレーズをチェックするようなものを取得する方法はあり1ますか?キーがパスフレーズを持っている場合のリターンコードで少し失敗しますか?

ありがとう!


あなたは要件がするかどうかを明らかにする可能性が持っているパスフレーズをかいないため、どのような理由のためと-それを持っていますか?
user1686

grawity:私の要件は、ユーザーがsshキーにパスフレーズを設定していることを確認することです。パスフレーズのあるキーのみが他のサーバーに配布されます。
Peter Farmer、

回答:


11

キーファイルがパスフレーズを使用している場合、「Proc-Type:」属性に「ENCRYPTED」という単語が追加されて設定されています。

だから、あなたはキーファイルの用途はを通してそれを実行することにより、パスフレーズかどうかを判断することができますfindし、grepそれが文字列「ENCRYPTED」を持っているかどうかを確認します。

# list keyfiles that USE a passphrase
HOMES=/home /mnt/nfs_home
find $HOMES -maxdepth 3 -type f -path '*/.ssh/id* -name "id_[dr]sa*" -exec grep -q "ENCRYPTED" {} \; -print

パスフレーズを持つファイルのリストを出力します。次に、それらをすべてのキーファイルのリストと照合して、パスフレーズを使用しないものを特定できます。すべてのキーファイルのリストは、たとえば-exec次のようにパラメーターを省略して取得できます。

# list all keyfiles
HOMES=/home /mnt/nfs_home
find $HOMES -maxdepth 3 -type f -path '*/.ssh/id* -name "id_[dr]sa*" -print

新しいSSHキー形式ではもう不可能でProc-Type、暗号化されているにもかかわらず、ヘッダーはファイルに書き込まれません。
オネイロス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.