替换 GNOME Shell、Wayland 和 SystemD 中的 SSH 代理

Naf*_*Kay 6 fedora environment-variables wayland systemd gnome-shell

我正在使用 Fedora 24 (amd64),它运行 GNOME 3/GNOME Shell 作为桌面环境,使用 Wayland 作为显示服务器,使用 SystemD 作为初始化。非常标准,开箱即用,这就是 Fedora 24 的发布方式。

我之前的发行版仍在使用 X,所以我在 /etc/X11/Xsession.d/autostart 中有一个名为 90-gpg-agent 的脚本,它有条件地启动 gpg-agent 或获取其导出的变量,使它们可用于启动的图形程序. 这使得像 unison-gtk 这样的程序拥有正确的SSH_AUTH_SOCK环境变量,以便他们可以使用 gpg-agent 作为 SSH 代理。在 bash 会话中运行的任何东西都只会使用我的 .bashrc 中的环境变量,但图形应用程序需要将其导出以供访问。

是否有 Wayland/GNOME/SystemD 的等效项,它将导出这些环境变量并将它们提供给在该显示服务器 + 桌面环境中启动的应用程序?

jsb*_*ngs 5

尝试systemctl --user import-environment SSH_AUTH_SOCK/etc/X11/xinit/xinitrc.d/. 检查出来/etc/X11/xinit/xinitrc.d/50-systemd-user.sh以供参考。


Mat*_*chs 3

只需在 gpg 代理 \xe2\x80\x93 中启用 ssh 支持,将行添加enable-ssh-agent~/.gnupg/gpg-agent.conf\xe2\x80\x93 并注销(然后重新登录)。

\n\n

此设置由 选取/etc/X11/Xsession.d/90gpg-agent

\n\n

问题是这仅适用于 X11 程序 \xe2\x80\x93 本机 Wayland 客户端不受影响。要解决这个问题,有两种选择,具体取决于什么gpgconf --list-dirs agent-ssh-socket打印的内容:

\n\n
    \n
  • 如果它是固定路径,请创建一个文件.config/environment.d/ssh.conf并添加该输出:

    \n\n
    SSH_AUTH_SOCK=/run/user/XXX/gnupg/S.gpg-agent.ssh\n
    Run Code Online (Sandbox Code Playgroud)\n\n

    gpgconf或打印时发生的任何其他事情。

  • \n
  • 如果您下次登录时它是位于其他位置的临时文件,请将这些行添加到您的.bashrc(或您正在使用的任何 shell 的等效项)中:

    \n\n
    if [ -z "$SSH_AUTH_SOCK" ] ; then\n    export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"\nfi\ndbus-update-activation-environment --systemd SSH_AUTH_SOCK\n
    Run Code Online (Sandbox Code Playgroud)\n\n

    这仅适用于 shell 以及在第一个 shell 之后启动的其他 Wayland 程序,但这应该足够了。

  • \n
\n