GNOME 3/GNOMEShellをデスクトップ環境として実行しているFedora24(AMD64)を使用しており、ディスプレイサーバーとしてWaylandを使用し、initとしてSystemDを使用しています。箱から出してすぐに使える、かなり標準的な方法です。これがFedora24の出荷方法です。
以前のディストリビューションではまだXを使用していたため、/ etc/X11/Xsession.d/autostartに90-gpg-agentというスクリプトがあり、条件付きでgpg-agentを起動するか、エクスポートされた変数を取得して、起動したグラフィカルプログラムで使用できるようにしました。 。これにより、unison-gtkなどのプログラムが正しいSSH_AUTH_SOCK
環境変数を持つようになり、SSHエージェントとしてgpg-agentを使用できるようになりました。 bashセッション内で実行されているものはすべて、.bashrcの環境変数を使用するだけですが、グラフィカルアプリケーションでは、アクセスのためにこれをエクスポートする必要がありました。
これらの環境変数をエクスポートし、そのディスプレイサーバー+デスクトップ環境で起動するアプリケーションに提供するWayland/GNOME/SystemDに相当するものはありますか?
systemctl --user import-environment SSH_AUTH_SOCK
のスクリプトで/etc/X11/xinit/xinitrc.d/
を使用してみてください。参考のために/etc/X11/xinit/xinitrc.d/50-systemd-user.sh
をチェックしてください。
Gpgエージェントでsshサポートを有効にするだけです–行enable-ssh-agent
を~/.gnupg/gpg-agent.conf
に追加します–そしてログアウトします(そして再びログインします)。
この設定は/etc/X11/Xsession.d/90gpg-agent
によって取得されます。
問題は、これがX11プログラムでのみ機能することです。ネイティブのWaylandクライアントは影響を受けません。これを修正するには、gpgconf --list-dirs agent-ssh-socket
が出力する内容に応じて、次の2つのオプションがあります。
固定パスの場合は、ファイル.config/environment.d/ssh.conf
を作成し、その出力を追加します。
SSH_AUTH_SOCK=/run/user/XXX/gnupg/S.gpg-agent.ssh
または他のgpgconf
がたまたま印刷されます。
次回ログインしたときに別の場所にある一時ファイルの場合は、次の行を.bashrc
(または使用しているシェルに相当するもの)に追加します。
if [ -z "$SSH_AUTH_SOCK" ] ; then
export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
fi
dbus-update-activation-environment --systemd SSH_AUTH_SOCK
これは、シェル、および最初のシェルの後に開始する他のWaylandプログラムでのみ機能しますが、それで十分です。