올바른 환경 변수를 사용하여 SSH 연결을 통해 시스템 사용자 단위를 어떻게 시작합니까?

올바른 환경 변수를 사용하여 SSH 연결을 통해 시스템 사용자 단위를 어떻게 시작합니까?

머신 콘솔(Arch Linux)에서 실행할 때 올바르게 실행되는 systemd --user 유닛이 있습니다. 그러나 시스템에 SSH로 접속하고 동일한 명령을 실행하여 사용자 셀을 시작하면 실패합니다. 오류는 다음과 같습니다

[user@remote ~]$ systemctl --user start my-user-service.service  
Failed to connect to bus: No such file or directory

[user@remote ~]$ systemctl --user show-environment  
Failed to connect to bus: No such file or directory

저는 UsePAM yessshd_config에서 설정했습니다.

원격 컴퓨터의 사용자에게 다음 두 줄을 추가하면 .bashrc(해당 사용자로 SSH 세션에 연결하기 전) 문제를 해결할 수 있습니다.

export XDG_RUNTIME_DIR="/run/user/$UID"
export DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus"

하지만 이 방법은 아치위키에 언급되어 있지 않아 권장하지는 않는 것 같습니다. 언급된 모든 방법을 시도했습니다.systemd/User#Environment_variables에서작성 환경 생성기 스크립트가 포함되어 있습니다. 나는 그들 중 누구도 일하게 할 수 없습니다. 각각의 경우 위에 처음 표시된 것과 동일한 오류가 발생합니다.

제가 시도한 간단한 생성기는 다음과 같습니다./usr/lib/systemd/user-environment-generators/40-user-env-generator

#!/bin/bash

echo XDG_RUNTIME_DIR="/run/user/$UID"
echo DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus"

이 문제를 해결하는 올바른 방법은 무엇입니까?

편집: 새로운 정보를 추가했습니다:

고양이/etc/pam.d/sshd

#%PAM-1.0
#auth     required  pam_securetty.so     #disable remote root
auth      include   system-remote-login
account   include   system-remote-login
password  include   system-remote-login
session   include   system-remote-login

cat/etc/pam.d/system-remote-login

#%PAM-1.0
auth      include   system-login
account   include   system-login
password  include   system-login
session   include   system-login

cat/etc/pam.d/system-login

#%PAM-1.0
auth       required   pam_tally2.so        onerr=succeed file=/var
/log/tallylog
auth       required   pam_shells.so
auth       requisite  pam_nologin.so
auth       include    system-auth

account    required   pam_tally2.so
account    required   pam_access.so
account    required   pam_nologin.so
account    include    system-auth

password   include    system-auth

session    optional   pam_loginuid.so
session    optional   pam_keyinit.so       force revoke
session    include    system-auth
session    optional   pam_motd.so          motd=/etc/motd
session    optional   pam_mail.so          dir=/var/spool/mail standard quiet
-session   optional   pam_systemd.so
session    required   pam_env.so

고양이/etc/pam.d/system-auth

#%PAM-1.0

auth      required  pam_unix.so     try_first_pass nullok
auth      optional  pam_permit.so
auth      required  pam_env.so

account   required  pam_unix.so
account   optional  pam_permit.so
account   required  pam_time.so

password  required  pam_unix.so     try_first_pass nullok sha512 shadow
password  optional  pam_permit.so

session   required  pam_limits.so
session   required  pam_unix.so
session   optional  pam_permit.so

답변1

sshdIE의 PAM 설정 /etc/pam.d/sshd과 키워드를 사용하여 참조하는 모든 파일을 확인하세요 @include.

pam_systemd.so세션 단계에서 다음과 같이 호출되는 모듈이 있어야 합니다 .

session optional pam_systemd.so

무엇보다도 PAM 모듈은 두 개의 환경 변수 XDG_RUNTIME_DIRDBUS_SESSION_BUS_ADDRESS.

답변2

참고: 모든 것이 로컬에서 제대로 작동한다면 문제는 다른 것과 관련된 것입니다 *-environment-generators.

문제에 대한 해결 방법을 위해 env 변수를 설정하지 않고 not을 사용할 수 있으므로 다음 $UID으로 대체하는 것이 좋습니다 (참조$(id -ru)user-environment-generatorssystem-environment-generatorshttps://man.archlinux.org/man/systemd.environment-generator.7) 데몬 자체가 다음 systemctl --user과 같이 실행되기 때문입니다.체계서비스는 시스템 환경의 영향을 받습니다.

답변3

SSH 서버가 PAM 모듈을 사용하도록 구성되어 있는지 확인하십시오. 존재하다/etc/ssh/sshd_config또는/etc/ssh/sshd_config.d/99-local.conf놓다

UsePAM yes

관련 정보