web-dev-qa-db-ja.com

Macのgpg2:GUIプロンプトを表示する代わりに、ターミナルでパスフレーズを入力する方法は?

Mountain Lionを使用していますが、gpgを使用してファイルを暗号化すると、パスフレーズを入力するように煩わしいGUIプロンプトが表示されます。外部GUIではなく、ターミナルでパスフレーズの入力を求められます。たとえば、私はそれをリモートで行っているかもしれません。

Mac用のgpgがターミナルでパスフレーズを要求し、GUIプロンプトでパスフレーズを要求しないようにする方法はありますか?


PDATE:これはgpg2では非常に難しいように思われるため、gpg1にダウングレードしました。 gpg2(MacGPG2)ですべてを試しましたが、何も機能しませんでした。吸う! gpg1で正常に動作します!

6
chrisapotek

以下は、MacGPG2ではなくmacportsでgnupg2を使用していることを前提としていますが、修正はユースケースに適用される可能性があります。

Macportsから「pinentry」パッケージをインストールします。

port -v install pinentry

〜/ .gnupg /gpg-agent.confを次のように編集します。

pinentry-program /opt/local/bin/pinentry-curses

既存の「pinentry-program」エントリを削除またはコメントします。ターミナルをリロードするか、次を使用します。

echo RELOADAGENT | gpg-connect-agent

完了。これで、ターミナルにピンエントリ/パスフレーズが表示されます(cursesダイアログ)。 inline-ttlpinentryの古いgpgv1.xの動作が必要な場合は、macportspinentryパッケージでカスタムの「./configure」コマンドを使用できる場合があります。

Mac用のMacGPG2/GPGツールを以前にインストールしたことがある場合は、ピン入力ダイアログが機能する(または単に再起動する)前に、「shutdown-gpg-agent」プロセスを強制終了する必要がある場合があります。

user$ ps ax |grep shutdown-gpg-agent
 1854   ??  S      0:00.01 /bin/bash /usr/local/MacGPG2/libexec/shutdown-gpg-agent

user$ kill -KILL 1854
4
Andrew

環境変数SSH_CONNECTIONを確認することで、ssh接続を経由しているかどうかを確認できます。

export GPG_TTY=$(tty)
if [[ -n "$SSH_CONNECTION" ]] ;then
    export PINENTRY_USER_DATA="USE_CURSES=1"
fi

チェックを使用して、次のチェックを使用して、sshまたはtmuxを実行しているかどうかを確認します。

export GPG_TTY=$(tty)
if [[ -n "$SSH_CONNECTION" || -n "$TMUX" ]] ;then
    export PINENTRY_USER_DATA="USE_CURSES=1"
fi

ソース

1

3つの言葉:自分でコンパイルしてください。はい、できます!ただし、必ず最初にgpg-agent.confファイルを削除してください。

0
rake

Mac OS High Sierra用のGnuPG(バージョン2.2.9)とそのすべての依存関係のコンパイルが完了しました。とても面白かったです。 libgcryptのテストで小さな問題を解決した後(Homebrewのそれぞれのレシピの少しの助けを借りて)、すべてが基本的に箱から出して動作しました。

システムにピンエントリプログラムがないため、秘密鍵をインポートしようとしましたが、インポートできませんでした。すばやく検索してこのページにたどり着きましたが、あまり役に立たなかったので、ピンエントリを自分でコンパイルすることにしました。

LinuxマシンでGnuPGを使用した経験から、煩わしく混乱するダイアログボックスを表示せずに、コマンドラインの通常のプロンプトにパスワードを入力したいことはすでにわかっていました。そして、それが私がここでプロセスを共有している理由です。簡単ですが、同様の問題を抱えている人を助けるかもしれません。

GnuPGからpinentryのソースコードを取得することから始めます。彼らの ウェブサイト をチェックしてください。執筆時点では、ソースをダウンロードするためのリンクは https://gnupg.org/ftp/gcrypt/pinentry/pinentry-1.1.0.tar.bz2 でした。 signature もダウンロードし、gpg自体を使用して信頼性を確認します。

検証をスキップしないでくださいこれは重要です!このプログラムは、すべてのgpgパスワードと秘密鍵にアクセスできます。あなたはそれがそれが主張するものであることを確認したほうがいいです!問題がある場合は、GnuPGのメンテナからキーをインポートしたことを確認してください( ここ を参照):

$ gpg --verify pinentry-1.1.0.tar.bz2.sig pinentry-1.1.0.tar.bz2

本物のソースファイルで作業していることを確認したら、そのディレクトリでソースコードとcdを抽出します。

$ tar xvf pinentry-1.1.0.tar.bz2
$ cd pinentry-1.1.0

コンパイルは非常に簡単です。

$ ./configure --enable-pinentry-tty
$ make
$ Sudo make install

configureが依存関係の欠落について文句を言う可能性があります。その場合は、エラーを読んで、GnuPG Webページから依存関係をダウンロードしてください(ダウンロードの整合性を常にチェックしてください!)。

上記のコマンドの重要な部分は、フラグ--enable-pinentry-ttyです。 Pinentry TTYは、コマンドラインで非常に通常の退屈なプロンプトでパスワードを入力する最も簡単な方法です。まさに私が欲しかったもの!私が間違っていなければ、とにかくcursesバージョンがビルドされます。これはCLIオプションですが、他のすべてのオプションと同じように混乱を招きます。

インストールすると、/usr/local/binにいくつかの新しいバイナリが表示されます。 pinentry-ttyという名前のファイルがあることを確認してください(ない場合は、問題が発生しました...)。

その新しいバイナリをgpgパスワードを入力するデフォルトの方法にするには、次の行を~/.gnupg/gpg-agent.confに追加します(ファイルとディレクトリがまだ存在しない場合は作成します)。

pinentry-program /usr/local/bin/pinentry-tty

すぐに試してみると、おそらく機能しません。古い構成でgpg-agentが実行されている可能性が高いためです。先に進み、すべてのgpg-agentを強制終了し、新しいエージェントを作成します。

$ Sudo killall gpg-agent
$ gpg-agent --daemon

それでおしまい!古いスタイルのTTYピンエントリーをお楽しみください:)

0