web-dev-qa-db-ja.com

GNOME Shell、Wayland、およびSystemDでのSSHエージェントの置き換え

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に相当するものはありますか?

6
Naftuli Kay

systemctl --user import-environment SSH_AUTH_SOCKのスクリプトで/etc/X11/xinit/xinitrc.d/を使用してみてください。参考のために/etc/X11/xinit/xinitrc.d/50-systemd-user.shをチェックしてください。

5
jsbillings

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プログラムでのみ機能しますが、それで十分です。

1