Unixパス - PASSWORD_STORE_GPG_OPTSを使用してパスワードを渡します。

Unixパス - PASSWORD_STORE_GPG_OPTSを使用してパスワードを渡します。

パス情報は次のとおりです。https://www.passwordstore.org

私のポイントは、コマンドラインからパスワードキーを渡したいということです。しかし、この問題に関して私が見つけることができるトピックと解決策は私の状況には適用されませんでした。

Passのコードを調べてみると、PASSWORD_STORE_GPG_OPTSというパラメータが見つかりました。私が知っている限り、これを使って渡すことが可能でなければなりません。--pinentry-mode=loopback --passphrase "<ここのパスワード>"Passで実行されるgpgで。これを行うコードスニペットは次のとおりです。

#Line 9
GPG_OPTS=( $PASSWORD_STORE_GPG_OPTS "--quiet" "--yes" "--compress-algo=none" "--no-encrypt-to" )

#(...)

#Line 387

pass="$($GPG -d "${GPG_OPTS[@]}" "$passfile" | $BASE64)" || exit $?

しかし、何らかの理由でこれは機能しません。

したがって、問題は、このパラメータを使用してgpgにパスワードを渡し、プロンプトなしで転送を使用できるかどうかです。そうでなければ他の方法がありますか?

編集:@themが提案したように、私がやっていることに関する情報は次のとおりです。

変数設定:

 export PASSWORD_STORE_GPG_OPTS="--pinentry-mode=loopback --passphrase '<password_goes_here>'"

注:パスワードには大文字、小文字、数字のみが含まれ、スペースやその他の文字は含まれません。

次に、次のコマンドを実行します。

pass address/to/some/password

結果:

gpg: decryption failed: No secret key

答え1

私の場合、@theyが提案したように(未知の理由で...)引用符を使用することは問題でした。それらがなければ、すべてが魅力のように動作します。

答え2

上記のように、文字列からパスワードを読み取るのではなく、一部のファイルを介してパスワードを処理することも可能です。

export PASSWORD_STORE_GPG_OPTS="--pinentry=loopback --passphrase-file /path/to/.passphrase"

パスワードをハッシュすることは不可能に見えるので(たとえばを使用してmkpasswd -m sha-512 passphrase > /path/to/.passphrase-hashed)プレーンテキストで提供する必要があります。

関連情報