仮想端末にいるときにUnixパスのPGPロック解除をどのようにキャッシュしますか?

仮想端末にいるときにUnixパスのPGPロック解除をどのようにキャッシュしますか?

GUIで実行しているときにpassパスワードを読み取るコマンド(例:)を実行すると、pass -c Email/FooBarパスワードフレーズを入力するように求めるプロンプトが表示されます。パスワードを入力すると、パスワードがクリップボードにコピーされます。

その後、ログアウトして再ログインせずに別のパスワードを読み取るコマンドを実行すると、passパスワードを再入力する必要はありません。

しかし、仮想端末で同じことを試した場合は、Control-Alt-F1毎回パスワードを入力する必要があります。

仮想端末でログインセッションごとにパスワードを正確に1回入力するにはどうすればよいですか?

答え1

コンソール(仮想端末と呼ばれるもの)と(GUI)端末での使用経験の違いは、スクリプトpassで使用されるpassキー管理とは何の関係もありません。gpgpassgpg-agent

最新のディストリビューションでは、Xで自動的に起動します。端末とコンソールのいずれかでジョブを実行すると、gpg-agentこれを確認できます。env | fgrep GPG_AGENT私のLinux Mint 17では/etc/X11/Xsession.d/90gpg-agent

gpg-agentページmanに示されているように:

X サーバーを使用していない場合は、通常の起動ファイル ~/.profile または .bash_profile に入れることもできます。 gpg-agentの複数のインスタンスを実行しないことが最善であるため、1つだけが実行されていることを確認する必要があります。 gpg-agentは環境変数を使用して、クライアントに通信パラメータについて通知します。実行中のエージェントをテストできるように、この環境変数の内容をファイルに書き込むことができます。以下は、Bourne シェル構文の使用例です。

     gpg-agent --daemon --enable-ssh-support \
               --write-env-file "${HOME}/.gpg-agent-info"

上記は90gpg-agent実際にスマートで既にgpg-agent実行されているかどうかをテストしますが、基本的に~/.gnupg/gpg-agent-info-$(hostname)

ディストリビューションが同様の設定を持っている場合は、上記の行を自分のディストリビューションに追加できる必要があります~/.profile(ただし、Xの開始と一致するPIDFILEを使用する必要がありますgpg-agent)。また、ファイルを再評価して、複数のコンソールで同じgpg-agentを使用できるようにする必要があります.gpg-agent-info

これを設定しようとするときは、pstree | grep -F pgp-agent必要以上にエージェントを実行しないようにしてください。そうしないと、環境によってはpassパスワードを再度尋ねるか、および/または他のコンソール間でパスワードを要求するかが異なります。

関連情報