セッションごとに1回だけパスフレーズを入力するようにgpgを構成する方法


18

gpgパスフレーズを一度だけ入力するように構成することは可能Ubuntu/XFceですか?それはセッション全体で機能します(私は使用しています)?

どのようにgpg動作するのかわかりませんが、デフォルトの機能はパスフレーズをgpg要求gpg-agentし、エージェントはpin-entryを実行してパスフレーズを要求しているようです。

pinentry-cursesをセッションごとに1回だけ使用したいので、パスフレーズを貼り付けて(hex文の文字列があります-を使用echo -n <SENTENCE> | str-hex)、パスフレーズを入れずにClaws Mailからメールに署名できます(pinentry-cursesをClawsで使用することはできません)郵便物)。

回答:


16

このページで説明されている手法を使用できます。

http://fvue.nl/wiki/Debian_4.0:_Installing_gpg-agent

ここに要点があります:

  1. gpg-agentおよびpinentryプログラムをインストールします。

    sudo apt-get install gnupg-agent pinentry-curses
    
  2. に以下の行を追加します~/.profile。POSIX確認シェルには、このファイルを含める必要があります。

    # Invoke GnuPG-Agent the first time we login.
    # Does `~/.gpg-agent-info' exist and points to gpg-agent process accepting signals?
    if test -f $HOME/.gpg-agent-info && \
        kill -0 `cut -d: -f 2 $HOME/.gpg-agent-info` 2>/dev/null; then
        GPG_AGENT_INFO=`cat $HOME/.gpg-agent-info | cut -c 16-`
    else
        # No, gpg-agent not available; start gpg-agent
        eval `gpg-agent --daemon --no-grab --write-env-file $HOME/.gpg-agent-info`
    fi
    export GPG_TTY=`tty`
    export GPG_AGENT_INFO
    

    ログインすると、この小さなスクリプトがアクティブになります。エージェントが実行されていない場合は、開始されます。エージェントを起動すると、接続するために環境変数を設定する方法が示されます。スクリプトはこれらの値をに保存します~/.gpg-agent-info。これにより、別のログインセッションを開始したときに、スクリプトが変数を正しく設定し、エージェントを使用できるようになります。

ブートごとにパスフレーズを入力する必要があるのは1回だけです。エージェントはキーをメモリに保存するため、パスフレーズを再度入力する必要はありません。


このスクリプトを喜んで使用していましたが、ランダムに失敗します。最終的に、私はこれに条件を修正し、GPG_PROCESS=`cut -d: -f 2 $HOME/.gpg-agent-info` if test -f $HOME/.gpg-agent-info && \ kill -0 ${GPG_PROCESS} 2>/dev/null && \ [[ ${GPG_PROCESS} == `pgrep -x -u "${USER}" gpg-agent` ]] ; thenそれはうまく働きました。問題は、上記のスクリプトがプロセス.gpg-agent-infoが生きているかどうかをチェックし、でシグナルを受け入れることkill -0です。プロセスが存在するが、存在しないgpg-agent場合、間違った動作をします。添付のコードは、適切なプロセスがあることを確認します。
wyer33
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.