Arch-Linux

登錄後 SSH_AUTH_SOCK 設置為錯誤值,但沒有明確設置它

  • May 5, 2022

我在 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

由於它被標記為已棄用,我什至沒有想到它可能會被使用。

引用自:https://unix.stackexchange.com/questions/701214