
環境
Ubuntuサーバー18.04
GPG2 v2.2.4
v1.7.1 合格
質問
gpg-agentを起動する方法はありますか?--監督起動時に?起動しようとすると、次の結果gpg-agent --supervised
が表示されます。
gpg-agent (GnuPG) 2.2.4 starting in supervised mode.
no LISTEN_PID environment variable found in --supervised mode (ignoring)
no LISTEN_FDS or LISTEN_FDNAMES environment variables found in --supervised mode (assuming 1 active descriptor)
Fatal: file descriptor 3 must be valid in --supervised mode if LISTEN_FDNAMES is not set
詳細
私のUbuntuサーバーにprotonmail-bridgeとpostfixをインストールしようとしています。 Protonmail-bridgeを起動するには、gnome-keyringまたはパスが必要です。理由はわかりませんが、gnome-keyringがサーバーでは機能しません(Linux Mintがインストールされているラップトップでは正しく機能します)。パスでブリッジを開始できます。これにはpass init
gpg2キーが必要です。
手動で行うと、すべてがうまく機能し、メールを送信できます。再起動時に(cronの@rebootを介して)自動的に実行されるスクリプトを作成しましょう。 gpg-agentを使用してgpg2キーのパスワードをキャッシュする必要があります。
#!/bin/bash
KEYID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
PIDOF=`pidof gpg-agent`
RETVAL=$?
# Start gpg-agent if it's not running
if [ "$RETVAL" -eq 1 ]; then
eval $(gpg-agent --daemon)
fi
# Cache passphrase
echo "my_passphrase" | /usr/lib/gnupg2/gpg-preset-passphrase -v -c $KEYID
# Start bridge
protonmail-bridge --noninteractive &
ログインしていない限り、このスクリプトは機能しません。私はそれを見つけるために次のスクリプトを編集しました。
#!/bin/bash
KEYID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
PIDOF=`pidof gpg-agent`
RETVAL=$?
# Start gpg-agent if it's not running
if [ "$RETVAL" -eq 1 ]; then
eval $(gpg-agent --daemon)
fi
# Show running gpg-agents
ps aux | grep gpg-agent > protonmail.log
echo " " >> protonmail.log
COUNT=`pidof gpg-agent | wc -w`
# While gpg-agent --daemon is the only one
while [ "$COUNT" -lt 2 ]; do
sleep 10
# Trying strat gpg-agent --supervised and caching passphrase
echo "my_passphrase" | /usr/lib/gnupg2/gpg-preset-passphrase -v -c $KEYID
COUNT=`pidof gpg-agent | wc -w`
# Show running gpg-agents
ps aux | grep gpg-agent >> protonmail.log
echo " " >> protonmail.log
done
# Cache passphrase
echo "my_passphrase" | /usr/lib/gnupg2/gpg-preset-passphrase -v -c $KEYID
# Start bridge
protonmail-bridge --noninteractive &
gpg-agent --homedir /home/myaccount/.gnupg --use-standard-socket --daemon
これらのログを使用すると、スクリプトの先頭から実行され、ログインすると/usr/bin/gpg-agent --supervised
すぐに起動することがわかります。スーパーバイザモードが実行されている場合、パスワードキャッシュとブリッジングが機能します。しかし、再起動するたびにサーバーにログインできません...
私は成功せずに多くの環境変数をエクスポートしようとしました。
編集する:
解決策
/usr/lib/systemd/user/gpg-agent.serviceを修正した後、gpg-agent --supervisedが失敗します(例:サービスを編集する方法がわかりません...)。 gpgは引き続き機能しますps aux
が、監督モードでは機能しません。
gpg-agent --homedir /home/my_account/.gnupg --use-standard-socket --daemon
私が考える重要な変数は--標準ソケットを使用してください(以前にテストしたことがあると確信しています...)。
とにかく、最初のスクリプトを次のように編集していくつかのエクスポートを追加すると、パスワードは必要な方法でキャッシュされます。
#!/bin/bash
GPG_TTY=$(tty)
export GPG_TTY
KEYID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
PIDOF=`pidof gpg-agent`
RETVAL=$?
# Start gpg-agent if it's not running
if [ "$RETVAL" -eq 1 ]; then
if [ -f "${HOME}/.gpg-agent-info" ]; then
. "${HOME}/.gpg-agent-info"
export GPG_AGENT_INFO
fi
eval $(gpg-agent --homedir /home/my_account/.gnupg --use-standard-socket --daemon)
fi
# Cache passphrase
echo "my_passphrase" | /usr/lib/gnupg2/gpg-preset-passphrase -v -c $KEYID
# Start bridge
protonmail-bridge --noninteractive &