web-dev-qa-db-ja.com

emacsは端末でgpg-agentを使用できますか?

pinentry-cursesをemacsで動作させることに問題があることを理解しています( http://emacswiki.org/emacs/EasyPG に関するコメントの一部を参照)。このため、ターミナルはgpg-agentと互換性がありません。

この場合、リモートマシンへのssh接続を介しているため、グラフィカルなピン入力ツールを使用できません。

ただし、事前にgpg-agentにパスフレーズを入力してから、emacsにこれを使用させることはできますが、エージェントがこの情報をまだ持っていない場合はパスフレーズの入力を求めることはできませんか?

これをnotmuch.elおよびEasyPGで機能させるには、どのような設定が必要ですか?

または、同じ効果を達成するが、セキュリティの問題がある可能性があるパスフレーズをキャッシュする代替方法はありますか(これがgpg-agentが最初に存在する理由です)?

11
David Gardner

この! -> https://github.com/ecraven/pinentry-emacs

あなたはいくつかのレンチをしなければならないでしょう、しかしこれを使うことは私のために働きました。スクリプトをPATHのディレクトリに配置し、次のエントリを~/.gnupg/gpg-agent.confに追加します。

pinentry-program <path-to-pinentry-emacs>/pinentry-emacs

次に、エージェントをリロードします。

$ echo RELOADAGENT | gpg-connect-agent

私にとっては夢のように機能します:)

4
djhaskin987

別の方法として、かなり最近のpinentry/gpg2(Arch Linuxでそれぞれ0.9.7と2.1.11でテスト済み)がある場合は、 http://elpa.gnu.org/packages/pinentry.html)を使用することです。

M-x list-packagesからpinentryをインストールしてから、

allow-emacs-pinentry

.gnupg/gpg-agent.confに入れて

(setenv "INSIDE_EMACS" (format "%s,comint" emacs-version))
(pinentry-start)

.emacs.d/init.elで。 M-x Shellを実行するとINSIDE_EMACSが設定されますが、単に.gpgファイルを開くと設定されないため、setenvをそこに配置する必要がありました。

これで、gpg-agentはターミナルから通常のcursesバージョンを使用し、Emacs内からはread-passwd(プロンプトとview-lossageから文字を非表示にします)を使用します。


編集:DebianパッケージにはEmacsサポートを削除するパッチがあるようです。したがって、今のところ、このソリューションは、pinentryを自分でコンパイルする準備ができている他のディストリビューション/人々に対してのみ機能します。

3
unhammer