異なるセッション間でgpg-agentを使用する

異なるセッション間でgpg-agentを使用する

設定しようとしています。gpg-agent

SSHを介して自分のコンピュータにログインして呼び出すと、gpg毎回パスワードを要求されます(gpg-agent自動的に起動しません)。

gpg-agent手動で使用を開始すると、次のようになります。

eval "$(gpg-agent --daemon)"

その後、次の呼び出しでgpg実際にエージェントを起動してパスワードを入力した後、パスワードなしでgpgを使用できます。そしてソケットが作成されたことがわかります。$HOME/.gnupg/S.gpg-agent=

ログアウトして再度ログイン(ssh)すると、ソケットがまだ存在し、エージェントが実行中であることがわかりますが、すべての呼び出しは、$HOME/.gnupg/S.gpg-agent=エージェントがないかのようにパスワードを要求します。psgpg

私はこれを私のものに追加しました.bashrc

GPG_TTY=$(tty)
export GPG_TTY

しかし、これはあまり役に立たないと思います。

私はこの行動がgpg-agent非常に混乱していると思います。それは私になじみssh-agent、操作が簡単で理解しやすいです。

gpg-agent私が使用するのと同じ方法でどのように使用できますかssh-agent

比較のための動作は次のとおりですssh-agent

コンピュータを初めて起動してログインした後、ssh-add手動で起動してパスワードを一度入力しました。

これにより、マイコンピュータ(X、コンソール、ssh ...)にログインするたびにプロキシを使用できます(パスワードを再入力する必要はありません)。これは次の行を追加することによって行われます.bashrc

export SSH_AUTH_SOCK="$(find /tmp/ssh-*/agent.* -uid $(id -u) -type s -print -quit 2>/dev/null)"

ベストアンサー1

gpgソケットを見つけませんが(新しいバージョン2.1とは異なります)、環境変数を見つけますGPG_AGENT_INFO。ログイン時には設定されません。ここに問題があります。明らかに、ソケット名が常に同じであることをuse-standard-socket選択できます。gpg-agent.conf

ログインスクリプトで変数を設定し、単純なスクリプトを実行して実行していることをgpg-agent確認する必要があります。

export GPG_AGENT_INFO=/path/to/your/HOME/.gnupg/S.gpg-agent:42:1
gpg-connect-agent /bye &>/dev/null || gpg-agent --daemon &>/dev/null

使用される部分ですgpg。 SSHの場合、SSH_AUTH_SOCKこれら2つの変数を設定する最も簡単な方法は、次の行を追加することです。

write-env-file "${HOME}/.gpg-agent-info

構成ファイルに追加しgpg-agent.conf、上記のスクリプトの後にこのスクリプトを実行します。

. "${HOME}/.gpg-agent-info"
export SSH_AUTH_SOCK

マニュアルページではこれについて説明しますgpg-agent

おすすめ記事