ssh-addが起動時にIDを追加したときにパスワードのssh-addクエリパス(パスワードマネージャ)をどのように取得しますか?

ssh-addが起動時にIDを追加したときにパスワードのssh-addクエリパス(パスワードマネージャ)をどのように取得しますか?

複数のSSHキーがあり、必要です。私はしばしば1つのセッションでこれらすべてを必要とし、正しいサーバーに対して正しいものを自動的に選択するようにsshを設定するので、ログイン時にそれらをすべて追加するスクリプトを書く必要があると思いました。私はこれを入れました.profile

eval $(ssh-agent)
ssh-add ~/list/of/ ~/paths/to/keys

これはログイン時にキーを追加しようとし、私が使用したパスワードを尋ねるのでうまくいきますssh-askpass(小文字に注意してください:私の言葉はプログラム、環境変数ではなく)。

passただし、さまざまなSSHキーのパスワードを含むパスワードを保存するためにも使用されます。私はgpg認証のためのパスワードを知っていますが、パスに保存されているpassすべてのパスワードを確実に覚えていないので、sshでパスワードの入力を求めるのは役に立ちません。

ssh-add別のパスワードを要求するにはどうすればよいですかpass(その後、passsshは別のsshパスワードを要求するのではなくgpg認証パスワードを求めるメッセージを表示しますか?)

のパスワードはpassssh idファイルと同じ方法で名前が付けられていませんが、同様のパターンで名前が付けられます(たとえば、ssh idの場合、id_rsa_personalそのパスワードは(〜/ .password-store /)ですssh/personal)。

たぶんパスラッパーを完全に迂回するネイティブGPGスクリプトがより良いでしょうか?

すべての助けに感謝!

答え1

これは私にとって効果的です。

if [[ -v PASS_PATH ]]; then
    pass $PASS_PATH
    exit $?
fi

for I in \
    "$HOME/.ssh/id_key_1_ed25519;your/path/in/pass/for/key1" \
    "$HOME/.ssh/id_key_2_rsa;your/path/in/pass/for/key1"
do
    SSHKEYPATH=${I%;*}
    PASS=${I#*;}
    SSH_ASKPASS_REQUIRE="force" SSH_ASKPASS="$0" PASS_PATH="$PASS" ssh-add $SSHKEYPATH < /dev/null
done

これは主に以下に基づいています。ファイルからssh-add読み取りパスワードをどのように作成できますか?そして実際にAskpassプログラムを呼び出すには< /dev/nullforceを使用してください。ssh-add

関連情報