![登录后 SSH_AUTH_SOCK 设置为错误值,但没有明确设置它](https://linux22.com/image/205389/%E7%99%BB%E5%BD%95%E5%90%8E%20SSH_AUTH_SOCK%20%E8%AE%BE%E7%BD%AE%E4%B8%BA%E9%94%99%E8%AF%AF%E5%80%BC%EF%BC%8C%E4%BD%86%E6%B2%A1%E6%9C%89%E6%98%8E%E7%A1%AE%E8%AE%BE%E7%BD%AE%E5%AE%83.png)
我在 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
由于它被标记为已弃用,所以我什至没有想到它可能会被使用。