SSH를 통해 로그인하고 사용자 범위 서비스를 설정하려고 시도한 후 $XDG_RUNTIME_DIR 및 $DBUS_SESSION_BUS_ADDRESS가 누락되는 이유는 무엇입니까?

SSH를 통해 로그인하고 사용자 범위 서비스를 설정하려고 시도한 후 $XDG_RUNTIME_DIR 및 $DBUS_SESSION_BUS_ADDRESS가 누락되는 이유는 무엇입니까?

SSH를 통해 로그인한 후 사용자 범위 서비스를 설정하려고 하는데 다음과 같은 것을 설정하려고 하면..

systemctl --user enable wallpaper.timer

문제의 사용자로 SSH를 통해 로그인했는데도 이러한 오류가 발생합니다.

Failed to connect to bus: $DBUS_SESSION_BUS_ADDRESS and $XDG_RUNTIME_DIR not defined (consider using --machine=<user>@.host --user to connect to bus of other user)

env해당 특정 환경 변수가 설정되지 않았는지 확인하세요. 그러나 어떤 이유로 다음이 작동합니다.

sudo systemctl --machine=<user>@.host --user enable wallpaper.timer

이것은 짜증나고 우회적인 것처럼 보입니다. 내 사용자 환경 변수에 액세스하려면 sudo를 실행해야 합니다. 이제는 루트 서비스와 설정을 사용하는 것보다 이런 방식으로 서비스를 설정하는 데 아무런 의미가 없습니다 User=<username>.

SSH 사용자 계정에 로그인하고 $XDG_RUNTIME_DIR 및 $DBUS_SESSION_BUS_ADDRESS를 설정하려면 어떻게 해야 합니까? 나는 이것을 시도했고 ssh같은 ssh -t결과를 얻었습니다.

답변1

SSH를 통해 로그인할 때 호스트의 SSH 서버 구성에서 PAM 시스템을 꺼서 $XDG_RUNTIME_DIR 및 $DBUS_SESSION_BUS_ADDRESS가 설정되지 않습니다.

sudo nano /etc/ssh/sshd.config

및 설정

UsePAM yes

수리하다.

분명히 이러한 변수를 제어하는 ​​것은 PAM 시스템입니다.

관련 정보