gpg-agentはオープンセッションなしで起動されます。

gpg-agentはオープンセッションなしで起動されます。

環境

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 initgpg2キーが必要です。

手動で行うと、すべてがうまく機能し、メールを送信できます。再起動時に(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 &

ベストアンサー1

おすすめ記事