GPG pinentryは、gpg-agentを渡すときにパスワードを入力している間はキーストロークを受け取りません。

GPG pinentryは、gpg-agentを渡すときにパスワードを入力している間はキーストロークを受け取りません。

私のgpg-agentをリモートサーバーに渡すと、私の秘密鍵がリストされていることがわかります。ローカルでキーをロック解除しても、リモートシステムでロックを解除する必要があります。

ただし、リモートコンピュータからロックを解除しようとすると、ローカルコンピュータにpinentryが送信されます。使用時にパスワードを入力できない場合pinentry-ttyがありますpinentry-curses

奇妙な動作があり、いくつかのキーストロークを受け取り、一部はプレーンテキストで表示されることもあります。

pinentry --version
pinentry-curses (pinentry) 1.1.0

地元の

gpg --version
gpg (GnuPG) 2.2.27

離れて

gpg --version
gpg (GnuPG) 2.2.12

以下は私のローカル設定ファイルです。

gpg-agent.conf

extra-socket /run/users/1000/gnupg/S.gpg-agent.extra
pinentry-program /usr/bin/pinentry-curses

ssh.config

Host remote
    HostName <ip-address>
    User <username>
    RemoteForward /run/users/1000/gnupg/S.gpg-agent /run/users/1000/gnupg/S.gpg-agent.extra

StreamLocalBindUnlinkまた、リモートサーバーに/etc/ssh/sshd_config

一部のローカル端末にpinentryが表示されるように「強制」するには、次のコマンドを使用する必要がありました。

gpg-connect-agent updatestartuptty /bye

リモートサーバーで署名しようとすると、ローカル端末に次の画面が表示されます。

┌────────────────────────────────────────────────────────────────┐
│ Note: Request from a remote site.                              │
│                                                                │
│ Please enter the passphrase to unlock the OpenPGP secret key:  │
│ "username <email>"                                             │
│ 256-bit EDDSA key, ID 1234567890,                              │
│ created 2021-01-01.                                            │
│                                                                │
│                                                                │
│ Passphrase: __________________________________________________ │
│                                                                │
│         <OK>                                    <Cancel>       │
└────────────────────────────────────────────────────────────────┘

パスワードを入力しようとすると、次のメッセージが表示されます。

┌────────────────────────────────────────────────────────────────┐
│ Note: Request from a remote site.                              │
│                                                                │
│ Please enter the passphrase to unlock the OpenPGP secret key:  │
│ "username <email>"                                             │
│ 256-bit EDDSA key, ID 1234567890,                              │
│ created 2021-01-01.                                            │
│                                                                │
│                                                                │
│ Passphrase: *elo w**wd    ____________________________________ │
│                                                                │
│         <OK>                                    <Cancel>       │
└────────────────────────────────────────────────────────────────┘

Pinentryを閉じると、コマンドラインで部分的なプレーンテキストを表示できます。

> elo wd

pinentry-tty.

私のローカルコンピュータではArch Linuxを実行していますが、Macosでも同じ動作が発生します。私の端末エミュレータには、simple terminalそれぞれを使用します。iterm2

リモートコンピュータがDebian Busterを実行しています。

pinentry-ttyまたはを使い続けたいですpinentry-curses

また、リモートサーバーからロックを解除せずに、GPG秘密鍵をローカルで「ロック解除」してリモートで転送できますか?

編集する:

4年前に誰かが同じ質問をしたようですね!

リモートサイトでローカルgpg-agentを使用するときの混合入力

残念ながら答えはありません。

答え1

MacOSでも同じ問題があります。

$ gpg --version
gpg (GnuPG/MacGPG2) 2.2.34

$ pinentry --version
pinentry-curses (pinentry) 1.2.0

同じiTermウィンドウで。ランニング:

$ killall gpg-agent && gpg-agent --daemon --pinentry-program /usr/local/bin/pinentry

その後、クイックテストを実行します。

$ echo "test" | gpg --clearsign

この問題は、pinentry同じ端末ウィンドウの制限が原因で発生します。

関連情報