登录后 SSH_AUTH_SOCK 设置为错误值,但没有明确设置它

登录后 SSH_AUTH_SOCK 设置为错误值,但没有明确设置它

我在 Arch Linux 上使用 KDE,并尝试在 ssh-agent 模拟模式下运行 gpg-agent,如上所述这里

我创建了 env~/.config/environment.d/80_gpg_agent.conf文件系统环境生成器

PINENTRY=pinentry-qt
SSH_AUTH_SOCK=${XDG_RUNTIME_DIR}/gnupg/S.gpg-agent.ssh

我没有设置,SSH_AGENT_PID因为提到的生成器不接受它,但无论如何都不应该设置它(而且它不是)。

如果我启动系统并登录 TTY,我将获得正确的值SSH_AUTH_SOCK(来自systemctl --user show-environment):
然后,如果我不登录 KDE 会话,我将获得正确的 SSH_AUTH_SOCK 值:

SSH_AUTH_SOCK=/run/user/1000/gnupg/S.gpg-agent.ssh

当我登录到 KDE 会话后(无论是 Wayland 还是 X11),我看到这个值被某些东西覆盖了:

SSH_AUTH_SOCK=/run/user/1000/ssh-agent.socket

该值看起来像通常设置的标准值ssh代理但我没有 ssh-agent 自动启动的单元文件。

到目前为止,我检查了以下内容:

  • 没有设置SSH_AUTH_SOCK.bashrc.profile/etc/bash.bashrc/etc/profile代码/etc/profile.d/*
  • 我为 gpg-agent 设置的环境变量中/etc/environment或之外没有环境变量~/.config/environment.d/*
  • 我使用嵌入了 ssh-agent 的 keepassxc,但我没有将其添加到自动启动中,并且它的 ssh-agent 被禁用

所以,问题是,它在哪里设置以及如何阻止它覆盖我的环境?

答案1

问题似乎是由于使用(已弃用)~/.pam_environment模块造成的pam_env

我发现 ~/.pam_environment 已覆盖SSH_AUTH_SOCK=${XDG_RUNTIME_DIR}/ssh-agent.socket

由于它被标记为已弃用,所以我什至没有想到它可能会被使用。

相关内容