Arch-Linux
登錄後 SSH_AUTH_SOCK 設置為錯誤值,但沒有明確設置它
我在 Arch Linux 上使用 KDE,並嘗試在 ssh-agent 仿真模式下執行 gpg-agent,如此處所述。
~/.config/environment.d/80_gpg_agent.conf
我為systemd-environmentd-generator創建了 env 文件: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-agent設置的標準值,但我沒有 ssh-agent 自動啟動的單元文件。
到目前為止,我檢查了以下內容:
- 沒有設置
SSH_AUTH_SOCK
在.bashrc
,.profile
,/etc/bash.bashrc
,/etc/profile
或/etc/profile.d/*
/etc/environment
在我為 gpg-agent 設置的變數中或~/.config/environment.d/*
之外沒有 env 變數- 我使用了嵌入了 ssh-agent 的 keepassxc,但我沒有將它添加到自動啟動中並且它的 ssh-agent 被禁用
所以,問題是,它在哪裡設置,我如何阻止它覆蓋我的環境?
似乎問題是由於使用(不推薦)模組
~/.pam_environment
造成的。pam_env
我發現 ~/.pam_environment 已覆蓋
SSH_AUTH_SOCK=${XDG_RUNTIME_DIR}/ssh-agent.socket
由於它被標記為已棄用,我什至沒有想到它可能會被使用。