머신 콘솔(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 yes
sshd_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
sshd
IE의 PAM 설정 /etc/pam.d/sshd
과 키워드를 사용하여 참조하는 모든 파일을 확인하세요 @include
.
pam_systemd.so
세션 단계에서 다음과 같이 호출되는 모듈이 있어야 합니다 .
session optional pam_systemd.so
무엇보다도 PAM 모듈은 두 개의 환경 변수 XDG_RUNTIME_DIR
와 DBUS_SESSION_BUS_ADDRESS
.
답변2
참고: 모든 것이 로컬에서 제대로 작동한다면 문제는 다른 것과 관련된 것입니다 *-environment-generators
.
문제에 대한 해결 방법을 위해 env 변수를 설정하지 않고 not을 사용할 수 있으므로 다음 $UID
으로 대체하는 것이 좋습니다 (참조$(id -ru)
user-environment-generators
system-environment-generators
https://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